标准库类模板
在C++17中,所有
任何一个良好的编译器都应该能够为
std::array<T, N>
具有成员访问函数。constexpr const T& operator[]( size_type n ) const;
还有一个非成员访问器函数模板
template< size_t I, class T, size_t N >
constexpr const T& get( const array<T,N>& a ) noexcept
在C++17中,所有
operator[]
的重载都已经被设置为constexpr
,那么我想知道std::get
是否还有任何优势。例如,在像下面这样的程序中:int main()
{
auto a = std::array<int, 3> { 1, 2, 3 };
constexpr auto idx = 0;
std::cout << a[idx] << '\n';
std::cout << std::get<idx>(a) << '\n';
}
任何一个良好的编译器都应该能够为
operator[]
和 get
传播常量索引值0
。问题是:使用 std::array
的 std::get
相比于 operator[]
有哪些好处呢?
std::tuple
的地方使用std::array
。 - Justin