auto foo(...) - > decltype(this)有一些解决方法吗?

时间:2012-01-17 09:18:23

标签: c++ c++11

我有下一个类并尝试声明成员函数,该函数将返回指向该类型但下一个代码

的指针
template<class Key, int b> class b_plus_tree_inner_node {
  auto split() -> decltype(this) {}
};

给了我这样的错误

  

在顶层无效使用'this'

我可以用另一种方式来做,我现在关于typedef的存在,但是它可能是decltype吗?

编辑:

我想完成这个:

b_plus_tree_inner_node<Key, b>* split() {...}

2 个答案:

答案 0 :(得分:5)

如果你想要一个成员函数在类中声明它:

template<class Key, int b> class b_plus_tree_inner_node {
   b_plus_tree_inner_node* split(){}
   // also valid:
   //b_plus_tree_inner_node<Key, b>* split(){}
};

如果您想要非会员功能,请将其设为模板:

template<class Key, int b>
b_plus_tree_inner_node<Key, b>* split(){}

该标准允许您编写auto split() -> decltype(this) {}但GCC 4.6尚不支持它(GCC 4.7的主干)。

答案 1 :(得分:0)

你可能想要这个:

template<class Key, int b> 
class b_plus_tree_inner_node 
{        
     b_plus_tree_inner_node<Key, b> split() 
     { 
          return /*...*/;
     }
};