私が参照パラメータを取る非加盟constexprの機能を持っている場合は、私が参照パラメータを取る非加盟constexprの機能を持っている場合、それはconstexprの非メンバ関数と参照アルゴス
答えて
一定の基準であることを持っています、それは持っていません一定の参照になる?
いいえ、それはしていませんが、それは良いです。
constexpr
機能の主な目的は、コンパイル時に式を評価することです。それは、このような機能を非const
の参照を渡すために意味がありません。あなたが関数内で入力オブジェクトを変更することを選択した場合、私はなぜあなたを依頼する必要がありますか?あなたが入力オブジェクトを変更しない場合は、const
メンバ関数するオブジェクトを変更しないメンバ関数を作るために、常に良い考えであると同じように、const
リファレンスを使用することをお勧めします。
機能が非const
参照次のコードは動作
struct Foo { int i; };
constexpr bar(Foo& f) { return f.i * 2; }
int main()
{
int arr[bar({20})]; // Can't use a temp object
}
を期待したときに、一時的なオブジェクトを使用することができないので、次のコードが機能しません。機能は一時的なオブジェクトだけでなく、左辺値として使用されるオブジェクトで使用することができます。
struct Foo { int i; };
constexpr bar(Foo const& f) { return f.i * 2; }
int main()
{
int arr[bar({20})];
Foo f{20};
int v = bar(f);
}
任意の参照や –
@BlairDavidsonリンクを投稿してください、私は「より良い」の資格を説明するために、もう少し説明を追加しました。それが理にかなってほしい。 –
短い答え:いいえ。
長い答え:いいえ、const
オペレータは唯一の非メンバ関数のデータが変更されないことを保証しますので - しかし、あなたは パラメータを渡すと、この外部パラメータが
- 1. LinuxのC:非静的メンバ関数への参照が
- 2. constexprメンバ関数を使用したconstexprメンバ変数の初期化
- 3. のconst参照資格のメンバ関数
- 4. 条件付きconstexprのメンバ関数
- 5. メンバ変数としての参照
- 6. 演算子のオーバーロード:メンバ関数と非メンバ関数の比較?
- 7. C++テンプレートのメンバ関数への未定義参照
- 8. Javascript:setTimeoutの関数と参照
- 9. constexprと関数の使用
- 10. 関数参照とラムダ
- 11. テンプレートオーバーロード(参照版と非参照版)
- 12. CakePHPの「非オブジェクトのメンバ関数」を
- 13. 非静的C++メンバ関数へのコールバック
- 14. 非メンバ関数ロックの使い方
- 15. 比較関数でconst参照VS非const参照対値渡し
- 16. 非仮想オーバーロードされたメンバ関数
- 17. メンバ関数とコピーコンストラクタ
- 18. ctypesと関数への参照渡し
- 19. コンストラクタ関数の参照
- 20. コトリン関数の参照
- 21. メンバ関数をメンバ関数のパラメータとして渡す
- 22. メンバ関数&constメンバ関数ポインタ控除
- 23. 静的constexprメンバを持つテンプレートクラスのODR
- 24. 「C++/Qtの-error/staticメンバ変数への未定義の参照」
- 25. 非constexpr関数の呼び出し 'std :: map ...'
- 26. ランダムピクチャジェネレータにエラーが発生しました "非共有メンバへの参照にはオブジェクト参照が必要です"
- 27. POD宣言内のメンバ変数の参照オフセット
- 28. C++:非テンプレートクラスのメンバとして汎用関数ラッパークラス
- 29. オブジェクト参照と関数名を取得
- 30. C++ - const vs非constメンバ関数 - 関数ポインタを持つテンプレート
を変更することができる[MCVE] – Jonas