Özel tipler için std::tuple_size
ve std::tuple_element
uzmanlıklarına izin verilir mi? Sanırım öyle, ama kesinlikle emin olmak istiyorum ve hiçbir somut bilgi bulamıyorum.C++: std :: tuple_size/tuple_element uzman olabilir mi?
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; };
}
I yapısal bağları ile kullanım için bu gerekir:
Örnek (ad alanları, üye işlevlerini ve get<I>
aşırı yükler ihmal) kullanıcı tanımlı türleri için
void f(vector<T,3> const& vec)
{
auto& [x,y,z] = vec;
// stuff...
}
Yeni + auto [a, b, c] yapısal bağlamaları özelliğini kullanmak için C++ 1z'de bunu yapmanız gerektiğini unutmayın. – Yakk