私が参照パラメータを取る非加盟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. エラー:非静的メンバ関数への参照と呼ばれなければならない(2)
- 10. 非メンバ関数ポインタが必要なときにメンバ関数ポインタを渡す?
- 11. constexprと関数の使用
- 12. 関数参照とラムダ
- 13. テンプレートオーバーロード(参照版と非参照版)
- 14. CakePHPの「非オブジェクトのメンバ関数」を
- 15. 非メンバ関数ロックの使い方
- 16. 非静的C++メンバ関数へのコールバック
- 17. 比較関数でconst参照VS非const参照対値渡し
- 18. スレッドのベクトルの参照をオブジェクトのメンバ関数に渡す際のエラー
- 19. 非仮想オーバーロードされたメンバ関数
- 20. constexpr関数の呼び出しによって静的なconstexprメンバを定義する
- 21. メンバ関数とコピーコンストラクタ
- 22. ctypesと関数への参照渡し
- 23. 関数内の参照ベクトル
- 24. 関数内のアンリゾルバー参照
- 25. コンストラクタ関数の参照
- 26. serverless.yml内の参照関数
- 27. コトリン関数の参照
- 28. メンバ関数をメンバ関数のパラメータとして渡す
- 29. Pythonのオブジェクト関数と参照関数の変数
- 30. 「C++/Qtの-error/staticメンバ変数への未定義の参照」
を変更することができる[MCVE] – Jonas