Variadic Templates - problem z odpakowaniem parametrów

0

chce sobie wypakować parametry z VARIADIC TEMPLATE ale nie wiem jak

chodzi o konkretyzację VARIADIC TEMPLATE Head, Tail dla pustego (?), ostatniego(?) elementu, gdyz nie kompiluje mi sie ponizszy kod, a nie wiem już co robię nie tak
zapętliłem się

z gory dziekuję za pomoc

 struct Base
{
	virtual void DoIt() = 0;

protected:
	template<typename T>
	static void ShowSizeOfType()
	{
		std::cout << sizeof(T) << std::endl;
	}

	template<typename TI>
	void Action()
	{
		ShowSizeOfType<TI>();
	}

	template<typename TI, typename ...T>
	void Action()
	{
		ShowSizeOfType<TI>();
		Action<T...>();
	}
};

template<typename ...T>
struct  Derived : Base
{
	void DoIt()
	{
		Action<T...>();
	}

protected:

};

int main()
{
	Derived<int, float, double, long long > d;

	d.DoIt();

	return 0;
}
0

a nie wiem już co robię nie tak

W DoIt chcesz przekazać do Action parameter pack mimo, że nie zdefiniowałeś tej metody by z nim pracowała (w sensie tylko z nim), więc nie ma prawa Ci się to skompilować. Niestety nic więcej nie mogę Ci doradzić, bo nie wiem co dokładnie próbujesz zrobić. Jeśli chcesz dobrać się do N-tego typu, gdzie N to indeks w liście typów reprezentowanej przez parameter pack, to z tego co się orientuje nie jest to możliwe z użyciem wbudowanych narzędzi.

0

gdy jest tak
'''cpp
template<typename TI, typename ...T>
void Action()
{
ShowSizeOfType<TI>();
// Action<T...>();
}
'''
to działa ale tylko dla pierwszego elementu(rzecz oczywista)
a jak chcę dka kolejnych to już lipa

1
template<typename TI typename U, typename ...T>
void Action() {
  ShowSizeOfType<TI>();
  Action<U, T...>();
} 
0

dziękuję stukrotnie :)
może kiedyś będę ogarnięty c++-owo jak Ty :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1