У меня есть класс C
с const
и нефизических const
добытчиками для некоторого общего типа 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
, но не был успешным.
'Я попытался result_of и decltype подходы, но не successful.' Вы должны вывесить _what_ вы пробовали, и что случилось. Просто делать смутные намеки на вещи и говорить, что они не работают, не полезно.Я имею в виду, я предполагаю, что у вас только 49 ошибок шаблона, но было бы неплохо быть уверенным! –
@underscore_d наверняка. Однако в этом случае, поскольку я ожидал, что решение будет простым, я попытался избежать 49 экранов беспорядка. Кроме того, есть много конкретных вопросов по теме «result_of» и «decltype», которые не затрагивают мою проблему, и я получаю неправильный «дублированный» флаг вопроса – manatttta