Jeśli mam krotki z różnych typów elementów jakUzyskaj indeks typu elementu krotki?
std::tuple<T0, T1, T2, ...>
i jak uzyskać indeks typu elementu?
template<class T, class Tuple>
struct Index
{
enum {value = ?;}
};
Dzięki.
Jeśli mam krotki z różnych typów elementów jakUzyskaj indeks typu elementu krotki?
std::tuple<T0, T1, T2, ...>
i jak uzyskać indeks typu elementu?
template<class T, class Tuple>
struct Index
{
enum {value = ?;}
};
Dzięki.
template <class T, class Tuple>
struct Index;
template <class T, class... Types>
struct Index<T, std::tuple<T, Types...>> {
static const std::size_t value = 0;
};
template <class T, class U, class... Types>
struct Index<T, std::tuple<U, Types...>> {
static const std::size_t value = 1 + Index<T, std::tuple<Types...>>::value;
};
Implementacja ta zwraca indeks pierwszego wystąpienia danego typu. Pytanie o indeks typu, który nie znajduje się w krotce, powoduje błąd kompilacji (a przy tym dość brzydki).
Jeśli typ nie należy do typów elementów, jakie jest zachowanie? – user1899020
@ user1899020 [Błąd kompilacji.] (Http://coliru.stacked-crooked.com/view?id=00d44c11b2bfb4ce09cd43c8bfe57739-c944ac6b0eed3bfc48b1f78a894f6965) – Casey
Testuję 'std :: cout <<" Indeks
Co się dzieje, jeśli masz 'std :: tuple' i pytasz o 'int'? Dlaczego tego potrzebujesz? –
Borgleader
Zakładam, że krotka ma różne typy elementów. Jeśli nie ma takiego założenia, każdy mecz jest w porządku. Używam go do implementowania wydajnej fabryki abstrakcyjnej przez daną krotkę klas pochodnych klasy podstawowej. – user1899020
Czy szukasz go do określonego środowiska, lub po prostu ogólne C++? – css