Variadic Templates - problem z odpakowaniem parametrów

Variadic Templates - problem z odpakowaniem parametrów
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
 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;
}
several
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
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

satirev
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
template<typename TI typename U, typename ...T>
void Action() {
  ShowSizeOfType<TI>();
  Action<U, T...>();
} 
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.