具有模板化类型struct woes的C函数模板参数

前端之家收集整理的这篇文章主要介绍了具有模板化类型struct woes的C函数模板参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码无法解释:
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>(); }
};

如果我将#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

解决方法

你应该修改你的函数调用,如下所示,添加template关键字:
T* get() { return m_ptr->template get<T>(); }

您可以查看this link获取语法说明.

猜你在找的C&C++相关文章