Я хочу написать функцию, которая будет выполнять операцию на основе типов, а не аргументов, функции. Таким образом, функция не получает аргументов на основе шаблона. Общая суть примерно такая:
#include <iostream>
void func() {
std::cout<<"End marker\n";
}
template <typename Type, typename... T>
void func() {
std::cout<<"Type sizeof "<<sizeof(T)<<"\n";
func<T...>();
}
int main() {
func<int, int, int>();
}
Что, конечно, не компилируется. Я пытался сделать это:
template <typename Type, typename... T>
void func() {
std::cout<<"Type sizeof "<<sizeof(T)<<"\n";
if( sizeof...(T)!=0 )
func<T...>();
}
Это не работает, однако. func<T...>
может не оцениваться, но его нужно компилировать.
Есть ли способ сделать это, что я пропускаю?