下面的代码位在VS2008和GCC 4.8.2编译typedef Foo <> Foo编译但它有效吗?
template<typename T=void>
struct Foo
{
};
// typedef Foo<> Foo; // Does *NOT* compile
int main()
{
typedef Foo<> Foo;
Foo f1;
// Foo<char> f2; // Does *NOT* compile
//::Foo<char> f3; // COMPILES
}
是否有效?
您正在模板中提供默认参数。这是完全有效的。 – 2014-10-17 18:29:41
@Captain:但是他们都被命名为'Foo'的事实呢? – Cameron 2014-10-17 18:30:15