2013-05-27 79 views
3

Minmal工作示例:兩個模板:「之前預期‘>’令牌主表達式」

#include <iostream> 

struct Printer 
{ 
    template<class T> 
    static void print(T elem) { 
     std::cout << elem << std::endl; 
    } 
}; 

template<class printer_t> 
struct Main 
{ 
    template<class T> 
    void print(T elem) { 
     // In this case, the compiler could guess T from the context 
     // But in my case, assume that I need to specify T. 
     printer_t::print<T>(elem); 
    } 
}; 

int main() 
{ 
    Main<Printer> m; 
    m.print(3); 
    m.print('x'); 
    return 0; 
} 

我的編譯器(克++)給我的錯誤「預期主表達式之前‘>’令牌「。怎麼了,怎麼解決?

C++ 11接受。

回答

10

clang在這種情況下,給出了一個更好的錯誤消息:

$ clang++  example.cpp -o example 
example.cpp:18:20: error: use 'template' keyword to treat 'print' as a dependent template name 
     printer_t::print<T>(elem); 
       ^
        template 
1 error generated. 

只需添加template那裏它說,和你設置。

+0

謝謝,這個工程。 – Johannes

相關問題