компилируется и работает отлично:Вывод кода шаблона C++ - Что я делаю неправильно в этом примере?
template<typename T, typename ... Args>
void func()
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
func<Args...>();
}
int main()
{
func<int, char, float>();
return 0;
}
... и это также собирает и работает нормально:
struct Object {}; // Some dummy object
template<typename T, typename ... Args>
void func(Object *a)
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
func<Args...>(a);
}
int main()
{
Object *a = new Object;
func<int, char, float>(a);
return 0;
}
... но это не компилируется, потому что он не может разрешить T:
struct Object {}; // Some dummy object
template<typename T, typename ... Args>
void func(Object *a, Object *b)
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
func<Args...>(a, b);
}
int main()
{
Object *a = new Object;
Object *b = new Object;
func<int, char, float>(a, b);
return 0;
}
Что я здесь делаю неправильно? Извините за невозможность надеть Ideone, заблокированный с работы.
Ни один из этих примеров не компилировать на coliru: http://coliru.stacked-crooked.com/a/ea051afe36f710d1 – NathanOliver
Странно ... Я согласен w с вами, но я использую Clang 3.7 на моем ноутбуке OS X, и он компилируется отлично. Странный. – user5406764