エラー、バグ、質問 - ページ 2419 1...241224132414241524162417241824192420242124222423242424252426...3185 新しいコメント TheXpert 2019.03.29 08:06 #24181 Alexey Navoykov:引数をr値で 渡す機能を言語に追加するのはどうでしょうか?そうすれば、すべての問題が即座に解決し、あらゆるタイプに対応したユニバーサルなコンテナを作ることができるようになります。如何してユニバーサルコンテナにはリンクと矢印が必要なのであって、こんなものは必要ないのです。 一般ユーザーはR値をする側ではないですしね。 Slava 2019.03.29 08:20 #24182 Alexey Navoykov:言語に引数をr値で 渡す機能を追加することについてはどう思われますか?特に、r-valueについては、上記のメソッドをオーバーロードすることになる。 これはまさに、すべてのSTLコンテナで実装されている方法です。 特に、スマートポインタ unique_ptr などの実装では、内部にユニークなリソースを保存するために、通常のコピーコンストラクタでは 対応できないため、この機能は非常に重要なものです。では、パラメータを参照渡し する意味は何でしょうか? TheXpert 2019.03.29 08:41 #24183 Slava:では、パラメータを参照渡し する意味は何でしょうか? あなたは非常に奇妙な質問をしています。r-valueのリンクはセマンティックを移動するためだけのもので、それ以外は通常のリンクです。 Alexey Navoykov 2019.03.29 09:33 #24184 Slava:では、パラメータを参照渡し する意味はあるのでしょうか?私もどういう参考になるのか、よくわかりません。元々、MQLで利用可能なl-value参照ではすべてのニーズをカバーできないことを述べていました。 この目的のためには、他のすべての型を受け入れるr-value参照が必要です。 したがって、r-valueとl-value用の2つのオーバーロード関数を組み合わせれば、すべての型の引数を、その起源にかかわらず受け入れることができるようになります。 定数はどこにも保存されず、その場で生成されるということは、l値ではなくr値で渡されることを意味します(C++とは異なります)。 どのような形で解釈されるかは原理的に問題ではなく、関数で受け付けられるかどうかが重要なのです。 TheXpert 2019.03.29 09:40 #24185 Alexey Navoykov: 定数はどこにも保存されず、その場で生成されるということは、l値ではなくr値の形で渡されなければならないということですね(C++とは異なります)。 関数の中で受け取ることができれば、どのような形で解釈されても原則的には違いはありません。r-valueの参照は、実際には、移動が行われるオブジェクトを意味する。 Alexey Navoykov 2019.03.29 09:57 #24186 TheXpert:つまり、一時的なオブジェクトを作成する必要があるのです。当然ながら、対象物は常にどこかに存在している。このオブジェクトは、その場で、つまり一時的に作成されると書きました。 でも、スラバが何を求めているかは理解できたと思います。値で受け取れるのに、なぜ一時的なオブジェクトを参照で受け取る必要があるのか、という意味だ。 まあ、要は、1つのコピーで参照用と値用の関数を同時にオーバーロードすることは不可能ということです。 template<typename T> void f(T) { } template<typename T> void f(T const&) { } class A { }; void OnStart() { A a; f(a); const int b=0; f(b); // 'f' - ambiguous call to overloaded function with the same parameters }また、値をr-valueに置き換えることで、実用的なバリアントが得られます。 template<typename T> void f(T &&) { } template<typename T> void f(T const&) { } TheXpert 2019.03.29 10:08 #24187 Alexey Navoykov: つまり、値で取れるのに、なぜ一時的なオブジェクトを参照で取るのか、ということです。 というのも void f(int) {} void f(const int&) {} void OnStart() { const int x = 0; f(x); // 'f' - ambiguous call to overloaded function with the same parameters } というのも、通常は値で渡すよりも参照で渡した方が便利だからです。 また、メソッドがテンプレート化されている場合(これがすべての始まりです)、現在の動作ではまともに書けないだけです。 Alexey Navoykov 2019.03.29 10:25 #24188 TheXpert:また、その方法がテンプレートベースである場合(これがすべての始まりです)、現在の動作では単に正しく書けないだけです。 そうです。参照渡しされたintはあまり説得力がないので、分かりやすくするために私の例をテンプレートに置き換えたのです) TheXpert 2019.03.29 10:26 #24189 Alexey Navoykov: そして、その値をr値に置き換えることで、動作するバリアントが得られます。 さほどでもない) 移動セマンティクスは、移動されるオブジェクトに、その内部を削除する必要がないことを伝えることを意味します。オブジェクトが定数である場合、mutableクラスのメンバが 必要ですが、mqlはそれをサポートしていません。 Alexey Navoykov 2019.03.29 10:34 #24190 TheXpert:さほどでもない) 移動セマンティクスは、移動されるオブジェクトに、その内部を削除する必要がないことを伝えることを意味します。オブジェクトが定数の場合、mutableクラスのメンバが 必要ですが、mqlはこれをサポートしていません。 そうですね、r-valueのconstは設定してはいけませんね(plusではそのようにコンパイルされません)。今すぐ修正します ) 1...241224132414241524162417241824192420242124222423242424252426...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
引数をr値で 渡す機能を言語に追加するのはどうでしょうか?そうすれば、すべての問題が即座に解決し、あらゆるタイプに対応したユニバーサルなコンテナを作ることができるようになります。
如何してユニバーサルコンテナにはリンクと矢印が必要なのであって、こんなものは必要ないのです。
一般ユーザーはR値をする側ではないですしね。
言語に引数をr値で 渡す機能を追加することについてはどう思われますか?特に、r-valueについては、上記のメソッドをオーバーロードすることになる。
これはまさに、すべてのSTLコンテナで実装されている方法です。
特に、スマートポインタ unique_ptr などの実装では、内部にユニークなリソースを保存するために、通常のコピーコンストラクタでは 対応できないため、この機能は非常に重要なものです。
では、パラメータを参照渡し する意味は何でしょうか?
では、パラメータを参照渡し する意味は何でしょうか?
では、パラメータを参照渡し する意味はあるのでしょうか?
私もどういう参考になるのか、よくわかりません。元々、MQLで利用可能なl-value参照ではすべてのニーズをカバーできないことを述べていました。 この目的のためには、他のすべての型を受け入れるr-value参照が必要です。 したがって、r-valueとl-value用の2つのオーバーロード関数を組み合わせれば、すべての型の引数を、その起源にかかわらず受け入れることができるようになります。
定数はどこにも保存されず、その場で生成されるということは、l値ではなくr値で渡されることを意味します(C++とは異なります)。 どのような形で解釈されるかは原理的に問題ではなく、関数で受け付けられるかどうかが重要なのです。
定数はどこにも保存されず、その場で生成されるということは、l値ではなくr値の形で渡されなければならないということですね(C++とは異なります)。 関数の中で受け取ることができれば、どのような形で解釈されても原則的には違いはありません。
r-valueの参照は、実際には、移動が行われるオブジェクトを意味する。
つまり、一時的なオブジェクトを作成する必要があるのです。
当然ながら、対象物は常にどこかに存在している。このオブジェクトは、その場で、つまり一時的に作成されると書きました。
でも、スラバが何を求めているかは理解できたと思います。値で受け取れるのに、なぜ一時的なオブジェクトを参照で受け取る必要があるのか、という意味だ。
まあ、要は、1つのコピーで参照用と値用の関数を同時にオーバーロードすることは不可能ということです。
また、値をr-valueに置き換えることで、実用的なバリアントが得られます。
template<typename T> void f(T &&) { } template<typename T> void f(T const&) { }
つまり、値で取れるのに、なぜ一時的なオブジェクトを参照で取るのか、ということです。
というのも
というのも、通常は値で渡すよりも参照で渡した方が便利だからです。
また、メソッドがテンプレート化されている場合(これがすべての始まりです)、現在の動作ではまともに書けないだけです。
また、その方法がテンプレートベースである場合(これがすべての始まりです)、現在の動作では単に正しく書けないだけです。
そして、その値をr値に置き換えることで、動作するバリアントが得られます。
さほどでもない)
移動セマンティクスは、移動されるオブジェクトに、その内部を削除する必要がないことを伝えることを意味します。オブジェクトが定数である場合、mutableクラスのメンバが 必要ですが、mqlはそれをサポートしていません。
さほどでもない)
移動セマンティクスは、移動されるオブジェクトに、その内部を削除する必要がないことを伝えることを意味します。オブジェクトが定数の場合、mutableクラスのメンバが 必要ですが、mqlはこれをサポートしていません。