[英]error: typedef name may not be a nested-name-specifier
我試圖按照這個答案的方式做一些事情,並努力:
$ gcc --version
gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
file.cpp:7: error: template argument 1 is invalid
file.cpp:7: error: typedef name may not be a nested-name-specifier
以及文件的違規部分:
template <class R, class C, class T0=void, class T1=void, class T2=void>
struct MemberWrap;
template <class R, class C, class T0>
struct MemberWrap<R, C, T0>{
typedef R (C::*member_t)(T0);
typedef typename boost::add_reference<typename T0>::type> TC0; // <---- offending line
MemberWrap(member_t f)
: m_wrapped(f){
}
R operator()(C* p, TC0 p0){
GILRelease guard;
return (p->*(this->m_wrapped))(p0);
}
member_t m_wrapped;
};
從typename T0
中刪除typename
typedef typename boost::add_reference<typename T0>::type> TC0;
並且可能也會掉落第二個尖括號。 即
typedef typename boost::add_reference<T0>::type TC0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.