std::tuple_size
和std::tuple_element
是否允許自定義類型的特化? 我想是的,但我想絕對確定,我找不到任何具體的信息。C++:可以std :: tuple_size/tuple_element專門?
實施例(命名空間,成員函數和get<I>
重載忽略):
template <typename T, size_t N>
struct vector { T _data[N]; };
template<size_t I, typename T, size_t N>
constexpr T& get(vector<T,N>& vec) { return vec._data[I]; }
namespace std {
template<typename T, size_t N>
class tuple_size< vector<T,N> > : public std::integral_constant<size_t, N> { };
template<size_t I, typename T, size_t N>
class tuple_element< I, vector<T,N> > { public: using type = T; };
}
我需要與結構化綁定使用:
void f(vector<T,3> const& vec)
{
auto& [x,y,z] = vec;
// stuff...
}
請注意,在C++ 1z中需要使用新的'auto [a,b,c]'結構化綁定功能。 – Yakk