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;
}
をしかし、それは、G ++と打ち鳴らす++でコンパイルに失敗します。
グラム++: error: expected type-specifier before 'constexpr'
打ち鳴らす++:私はそれを打ち鳴らすから
#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;
}
をコンパイルするために、以下のようにしなければならない error: type name does not allow constexpr specifier to be specified
++のエラーメッセージ、私がのためにconstexpr
を使用することができないようですタイプ名。
したがって、タイプエイリアスをconstexpr関数に定義することは可能ですか?はいの場合、どうですか?
静的に使用できないように... –
"*したがって、constexpr関数への型エイリアスを定義することは可能ですか?" 1つの型エイリアスを持つことができます。あたかもコンパイル時定数式であるかのように関数を呼び出すことはできません。だからあなたが望む効果は不可能です。 –
@MarcGlisそれは理にかなっています。 – Mine