这段代码无法解释:
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