У меня есть некоторый класс C
с const
и не const
getters для некоторого общего типа 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_of
и decltype
, но не был успешным.