Các bit mã sau biên dịch trong VS2008 và GCC 4.8.2typedef Foo <> Biên dịch Foo nhưng nó có hợp lệ không?
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
}
Có hợp lệ?
Bạn đang cung cấp đối số mặc định trong mẫu. Nó hoàn toàn hợp lệ. –
@Captain: Nhưng thực tế là cả hai đều có tên là 'Foo'? – Cameron