W C++ 11 lub C++ 14, próbuję zdefiniować alias typu do funkcji constexpr.Czy można zdefiniować alias typu do funkcji constexpr
Próbowałem:
#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;
}
Ale to nie skompilować z g ++ i Clang ++.
g ++: error: expected type-specifier before 'constexpr'
dzyń ++: error: type name does not allow constexpr specifier to be specified
mam zrobić jak poniżej, aby skompilować
#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;
}
Z brzękiem ++ 's komunikatem o błędzie, wydaje się nie mogę za pomocą constexpr
dla Wpisz imię.
Czy istnieje możliwość zdefiniowania aliasu typu do funkcji constexpr; Jeśli tak, w jaki sposób?
Tak jak nie możesz użyć słowa "static" ... –
"* Czy możliwe jest zdefiniowanie aliasu typu do funkcji constexpr *" Możesz mieć alias typu dla jednego. Po prostu nie można wywołać funkcji, jak gdyby była to ciągła ekspresja czasu kompilacji za pośrednictwem jednego. Efekt, który prawdopodobnie chcesz, jest niemożliwy. –
@MarcGlisse ma sens. – Mine