問題タブ [auto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - auto &&は何を教えてくれますか?
あなたが次のようなコードを読んだ場合
auto&& var = foo();
ここで、foo
はタイプの値で返される関数ですT
。次にvar
、を参照する型右辺値の左辺値ですT
。しかし、これは何を意味するのvar
でしょうか?それは、私たちがの資源を盗むことを許されているということvar
ですか?あなたが独占的な所有権を持っていることを伝えるためauto&&
にあなたが戻ったときのようにあなたがあなたのコードの読者に何かを伝えるために使うべきである合理的な状況はありますか?unique_ptr<>
そして、たとえば、クラスタイプのT&&
場合はどうでしょうか。T
auto&&
テンプレートプログラミング以外のユースケースがあるかどうかを理解したいだけです。この記事の例で説明されているもののように、ScottMeyersによるUniversalReferencesです。
c++ - 範囲ベースのステートメントが自動&&によって範囲を取得するのはなぜですか?
範囲ベースのfor
ステートメントは、§6.5.4で次と同等に定義されています。
ここで、range-init
は範囲ベースの2つの形式に対して次のように定義さfor
れます。
(この節は、他の部分式の意味をさらに指定します)
なぜ__range
推定型が与えられるのauto&&
ですか?私の理解でauto&&
は、式を通過させることにより、式の元の値(左辺値/右辺値)を保持するのに役立つということですstd::forward
。ただし、__range
はどこにも渡されませんstd::forward
。__range
、、、__range.begin()
またはのいずれかとして、範囲イテレータを取得する場合にのみ使用されますbegin(__range)
。
ここで「ユニバーサルリファレンス」を使用する利点は何auto&&
ですか?auto&
十分ではないでしょうか?
注:私が知る限り、提案はの選択について何も述べていませんauto&&
。
c++ - プライベート タイプで auto を使用できるのはなぜですか?
次のコードがコンパイルされて実行されることに少し驚きました (vc2012 & gcc4.7.2)
このコードが正常にコンパイルされるのは正しいですか? そして、なぜそれは正しいのですか?auto
(予想どおり)名前を使用できないのに、プライベート型で使用できるのはなぜですか?
c++ - 自動変数とそのタイプ
投稿で、イテレータを使用してコンテナから要素を削除する方法を見つけました。反復中:
auto
タイプなしで使用されるのはなぜauto next = it;
ですか?
私はC++11ではなくVS10を使用しています!
c++ - 「自動復帰」関数でdecltypeが必要なのはなぜですか?
このコードを検討してください:
非常に簡単な質問があります。なぜ、2 番目のメソッド (を使用しないメソッド) とは異なりdecltype()
、後置の戻り値の型を挿入する必要があるのですか?add()
add()
c++ - 自動の無効な使用
このコードでは:
gcc 4.7.1からエラーが発生します:
なぜ何かアイデア?それは正しくコンパイルされるべきではありませんか?
c++ - auto を使用したプライベート タイプの公開: どこで役立つのでしょうか?
この質問auto
では、プライベート タイプを次のように公開する理由について説明しました。
C++11標準では完全に問題ありません。私がまだ得ていないのは、このイディオムが実際のアプリケーションでどのように役立つかということです。 このイディオムを効果的に使用できる問題はありますか、それともキーワードの「奇妙な」副作用と見なす必要がありますか?
c++ - ISO C ++は、自動反復子の型のない「it」の宣言を禁止していますか?
次の6行があります。
VS2012 では完全に正常にコンパイルされますが、centOS6 の GCC では次のエラーが発生します。
rcp_amxinfo は次のように定義されています。
Linux でこれらのエラーを解決するにはどうすればよいですか?
c++ - auto で使用するための C++11 範囲ベース
a の要素を反復処理して読み取るには、次の C++11範囲ベースの for with withの使用法が正しいvector<int>
と思います。auto
コンテナーに格納されている要素が単純な整数ではなく、たとえば s のような「重い」ものである場合、範囲ベースの for + の正しい使用法でstd::string
それらを反復処理することは次のとおりです。vector<string>
auto
を使用すると無駄なディープ コピーが回避され、ループ コードはベクターの内容を監視しconst &
ているだけなので問題ありません。
これまでの私の理解は正しいですか?
auto
ここで、別の形式のin range-based for loops:を使用するコードを見ましたauto&&
。
この使用法は何に適していますか?&&
範囲ベースの for ループで右辺値参照 ( ) を使用する利点は何ですか? どのような場合にこのスタイルを使用する必要がありますか?
c++ - 末尾の戻り型の構文は、すべての関数のデフォルトの構文にする必要がありますか?
重複の可能性:
代替関数構文
複雑な関数テンプレートでは、パラメーターで使用するためにC ++ 11の末尾の戻り型構文が必要にdecltype
なる場合があります。そうしないと、スコープに入るのが遅すぎます。
通常の関数であっても、今後は常にこの新しい構文を使用する方が一貫性がありませんか?
次に、最新のコードでは2つではなく1つの関数構文を処理するだけで済み、暗黙のintまたは暗黙のusing宣言を非推奨にしたのと同じように、古い構文を非推奨にすることができます。
新しい構文をより魅力的にするために、より適切なauto
名前に置き換えることができます。
そして突然、の署名はmain
関数型プログラマーにとって非常に魅力的に見えます。
私は何かを見落としていますか?末尾の戻り型の構文は、私が考えていなかった方法で劣っていますか?