В C++ 11 или C++ 14 я пытаюсь определить псевдоним типа для функции constexpr.Можно ли определить псевдоним типа для функции constexpr
Я пробовал:
#include <iostream>
constexpr int foo(int i, int j) { return i + j; }
using TConstExprFunction = constexpr int (*)(int i, int j);
int main() {
TConstExprFunction f = foo;
constexpr int i = f(1, 2);
std::cout << i << std::endl;
}
Но он не компилировать с г ++ и лязг ++.
г ++: error: expected type-specifier before 'constexpr'
лязг ++: error: type name does not allow constexpr specifier to be specified
я должен делать, как показано ниже, чтобы сделать его компиляции
#include <iostream>
constexpr int foo(int i, int j) { return i + j; }
using TConstExprFunction = int (*)(int i, int j);
int main() {
constexpr TConstExprFunction f = foo;
constexpr int i = f(1, 2);
std::cout << i << std::endl;
}
От лязга ++ сообщение об ошибке 's, кажется, я не могу с помощью constexpr
для имя типа.
Итак, можно ли определить псевдоним типа для функции constexpr; Если да, то как?
Так же, как вы не можете использовать 'static' там ... –
" * Таким образом, можно определить псевдоним типа для функции constexpr * «У вас может быть псевдоним типа для одного. Вы просто не можете вызвать функцию, как если бы это было выражение постоянной времени компиляции через одно. Таким образом, эффект, который вы, вероятно, хотите, невозможно. –
@MarcGlisse имеет смысл. – Mine