をconstexprのために割り当てることができない理由私は、次のコード右辺値が基準変数
constexpr int into(int a,int b)
{
int c=a*b;
return c;
}
int main()
{
constexpr int &n=into(5,5);
}
を有し、私はキーワードconstexpr
がC++ 11に導入された(MSDNに)
を読んできましたC++で改善14。それは一定の表現を意味します。
const
のように、変数に適用して、コードが値を変更しようとするとコンパイラエラーが発生するようにすることができます。
私はそれを読んだ後、私はconstexpr
がconst
の代わりに使用することができると考えますが、上記のコードのために私はconstexpr
が置き換えられた場合
`int main()': invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int'`
を述べるコンパイラエラーを取得しますconst
、それは正常に動作します。私はこの行動を理解していません。誰かが光を当てることができますか?
'constexpr'リファレンスはグローバル変数にバインドする必要があります。答え[ここ](http://stackoverflow.com/a/28614655/1460794)を参照してください。 – wally
@ flatmouse、リプレイのおかげで...リンクの答えの1つは、 "参照は概念的には変数のアドレスを取ることと等価であり、ローカル変数のアドレスは定数ではありません"ここで私がconstを使うときそれは縛る。 constexpr.iだけでなく、constとconstexprの振る舞いも同じであると信じています –
'into'の戻り値はどこにも保存されないが、その戻り値への参照を保存するという問題があるかもしれませんその参照はどこを指していなければなりませんか? – Oebele