Условно функция-член constexpr
Предположим, у меня есть шаблон класса
template <typename T>
class foo {
T m;
decltype(auto) f() { return m.f(); }
};
Как я могу дать foo:f()
спецификатор constexpr, только если T::f()
такое консекстр?
1 ответ
Решение
Вы просто ударили constexpr
в теме:
constexpr decltype(auto) f() { return m.f(); }
Да, это все еще в силе, даже если T::f()
не constexpr
; такую функцию просто нельзя использовать в константных выражениях. Смотрите [dcl.constexpr] / 6.