Gcc (4.7.2) 在编译这段代码时会抛出一个小错误:
#include <iostream>
template<typename T>
struct test
{
template<int n>
int select() const
{
return n;
}
};
template<typename T>
struct test_wrapper
{
void print() const
{
std::cout << t.select<3>() << std::endl; // L.18
}
test<T> t;
};
int main()
{}
错误是:
test3.cpp: In member function 'void test_wrapper<T>::print() const':
test3.cpp:18:34: error: expected primary-expression before ')' token
例如,如果我更改test<T> t
为专用类型,test<void> t
则此错误消失。
哪里有问题?