Próbowałem poniższy kod, ale daje:Tworzenie nowej klasy krotka popping ostatni typ
main.cpp: 29: 22: error: agregat 'pop<std::tuple<int, char, float> > p'
ma niekompletną typu i nie mogą być definiowane
Co czy ja tęsknię?
template <typename T>
struct pop;
template <typename E, typename... Ts>
struct pop<tuple<Ts..., E>> {
using result = tuple<Ts...>;
};
tuple<int, char, float> t;
typename pop<decltype(t)>::result p;
Jeśli Ts ... musi być w końcu na liście typu, dlaczego to działa w tym przykładzie z http://en.cppreference.com/w/cpp/language/parameter_pack:
template<class A, class B, class...C> void func(A arg1, B arg2, C...arg3)
{
container<A,B,C...> t1; // expands to container<A,B,E1,E2,E3>
container<C...,A,B> t2; // expands to container<E1,E2,E3,A,B>
container<A,C...,B> t3; // expands to container<A,E1,E2,E3,B>
}
Watykan chce mieć słowo z tobą ... (tytuł edytowany) – sehe