fin*_*ncs 6 c++ templates arguments function c++11
这段代码无法解释:
struct sometype
{
template <typename T>
T* get() { return nullptr; }
};
template <typename T>
struct anothertype
{
#if 1
template <typename T2> struct some_wrapper { typedef T2 type; };
typedef typename some_wrapper<sometype>::type thetype;
#else
typedef sometype thetype;
#endif
typedef thetype* Ptr;
Ptr m_ptr;
T* get() { return m_ptr->get<T>(); }
};
Run Code Online (Sandbox Code Playgroud)
如果我将#if
参数更改为0,则会以某种方式修复.有人可以解释一下吗?请注意,显然毫无意义的some_wrapper
事情实际上在我的真实代码中做了一些有用的事情.
我正在使用g ++ 4.7.1 -fstd=gnu++11
,错误如下(指向我声明的行anothertype<T>::get
:
error: expected primary-expression before '>' token
error: expected primary-expression before ')' token
Run Code Online (Sandbox Code Playgroud)
小智 8
用你所有的typedef很难说,但是你需要下注:
m_ptr->template get<T>();
Run Code Online (Sandbox Code Playgroud)
你应该修改你的函数调用,如下所示,添加template
关键字:
T* get() { return m_ptr->template get<T>(); }
Run Code Online (Sandbox Code Playgroud)
您可以查看此链接以获取语法说明.
归档时间: |
|
查看次数: |
245 次 |
最近记录: |