关于c ++:GCC模板:预期?(?之前?>?令牌

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)字母名称