GCC Templates: expected ?(? before ?>? token
本问题已经有最佳答案,请猛点这里访问。
我不明白为什么以下代码不能编译:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | template< typename TypeArg > class Data { public: struct Selector1 { }; template< typename Selector > void foo() { } }; template< typename TypeArg > class Test { public: void test(); }; template< typename TypeArg > void Test< TypeArg >::test() { Data< TypeArg > data; data.foo< typename Data< TypeArg >::Selector1 >(); } |
我用GCC4.6和GCC4.9测试过它。两者都给了我相同的错误:
test.cpp: In member function ?void Test::test()?:
test.cpp:28:51: Error: expected ?(? before ?>? token
test.cpp:28:53: Error: expected primary-expression before ?)? token
有人能告诉我编译代码需要做什么吗?
(P)由于EDOCX1的类型是以英文为基础的,那么EDOCX1的性质是不知道和不需要:(p)字母名称