c++ - 函数模板返回类型推导

标签 c++ c++11 templates c++14

我有一些课Cconst和非const一些通用类型的 setter/getter Node :

template <typename NodeType>
class CParent{};

class Node {};

class C : public CParent<Node> {
    Node&       getNode(Index i);
    const Node& getNode(Index i) const;
};

现在我想创建一个调用 getNode 的别名函数对于 C 类的对象:

template <class CType>
NodeType& AliasGetNode(CType* cobject);

但是我如何推断 NodeType ?即,如果我调用 AliasGetNode<const C>(c)AliasGetNode<C>(c) , NodeType应分别为const Node&Node& .

我该怎么做?

我试过 result_ofdecltype方法但没有成功。

最佳答案

让编译器推导出返回类型(从 C++14 开始):

template <class CType>
decltype(auto) AliasGetNode(CType& cobject)
{
    return cobject.getNode(0);
}

关于c++ - 函数模板返回类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41426753/

相关文章:

c++ - 如何使用 C++ 在 LUA 中编写具有对话和菜单的交互式 NPC 脚本?

C++ 动态数组 - 通过复制两个数组

c++ - 如何正确调整 vector 大小?

c++ - 链表析构函数与 Valgrind 一起执行,但不单独执行

c++ - 在基于策略的重构中缩短模板参数

c++ - 关于 C++ 模板的问题

c++ - 在什么情况下参数依赖名称查找(ADL)开始?

c++在没有重载的情况下接收const左值和右值引用参数

c++ - 为指向集合的指针重载开始/结束是个好主意吗

javascript - 在 handlebars 模板中设置第一个单选按钮被选中