問題タブ [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++ - C++11でautoとdecltypeを使用する
現在受け入れられているc++11の機能を学習しようとしていますが、autoとdecltypeに問題があります。学習演習として、いくつかの総称関数を使用してstdクラスリストを拡張しています。
メンバーマップの場合、渡された関数が何を返すかに応じて、戻り型を汎用にする必要があります。したがって、リターンタイプの場合、このようなことを行うことができます。
これは、関数テンプレートのfloatタイプも削除する必要があります。
テンプレートクラスを使用することもできますが、リターンタイプを指定する必要があるため、インスタンスの使用がより冗長になります。
私の質問を要約すると、テンプレートクラスを使用せずにマップを定義し、それが返すタイプでジェネリックにする方法を理解しようとしています。
c++ - C++11 の auto キーワードではどれくらい多すぎますか?
私はauto
、複雑なテンプレート化された型に対して C++11 標準で利用可能な new キーワードを使用してきました。しかし、私は次のようなことにも使用しています:
そして、より懐疑的に:
このトピックに関する議論はあまり見たことがありません。auto
型は多くの場合、ドキュメンテーションおよびサニティ チェックの形式であるため、過剰に使用される可能性があるようです。この新機能を使用する際にどこに線を引きauto
ますか?また、この新機能の推奨される使用例は何ですか?
明確にするために:私は哲学的な意見を求めているわけではありません。標準委員会によるこのキーワードの意図された使用を求めています。おそらく、その意図された使用が実際にどのように実現されているかについてコメントしてください。
c++ - auto と decltype の関係
は
に相当
また
それともどちらでもない?
c++ - 新しいキーワード「auto」; 変数型を宣言するためにいつ使用する必要がありますか?
重複の可能性:
C ++0xautoキーワードでは多すぎます
私たちは(コミュニティとして)自動車が悪用されている時期やかどうかを判断するのに十分な経験を持っていますか?
私が本当に探しているのは、に関するベストプラクティスガイドです。
- 自動を使用する場合
- 避けるべきとき
80%のケースですぐに従うことができる簡単な経験則。
文脈として、この質問はここでの私の応答によって引き起こされます
c++ - C ++ 11自動:定数参照を取得した場合はどうなりますか?
次の簡単なコードを見てください。
私はauto
このように使用しようとしました:
これは、関数の戻り型である、my_foo
への定数参照になると思いました。Foo
ただし、のタイプauto
はFoo
、参照ではなくです。さらに、my_foo
をコピーして作成しg_temp
ます。この振る舞いは私にはそれほど明白ではありません。
への参照を取得するには、次のFoo
ように記述する必要があります。
質問:なぜ参照ではなくオブジェクトとしてauto
の戻り型を推測するのですか?GetFoo
c++ - C++ 自動キーワード。なんで魔法なの?
私が C++ を学ぶために使用したすべての資料から、auto
常に何の役にも立たない奇妙な保存期間指定子がありました。しかしつい最近、それ自体を型名として使用するコードに遭遇しました。好奇心から試してみたところ、たまたま割り当てたものの型を想定しています!
突然、STL イテレーターや、テンプレートを使用するものはすべて、10 倍簡単に記述できます。Python のような「楽しい」言語を使用しているように感じます。
このキーワードは私の人生のどこにありましたか?ビジュアルスタジオ専用とか移植不可とか言って、私の夢を打ち砕く気か?
c++ - ラムダ関数で auto を使用する
上記の例をコンパイルすると、次のようなエラー出力が開始されます。
キーワードauto
をラムダ式で使用してはならないということですか?
これは機能します:
auto キーワードを含むバージョンが機能しないのはなぜですか?
c++ - テンプレート化された関数でautoとdecltypeを使用する
自動返品タイプのテンプレートを使用しようとしていますが、問題が発生しています。STLマップを受け入れ、マップ内のインデックスへの参照を返す関数を作成したいと思います。正しくコンパイルするために、このコードには何が欠けていますか?
(注:マップは0の整数割り当てで初期化できると想定しています。後で、ブーストコンセプトチェックを追加して、正しく使用されていることを確認します。)
この関数を呼び出すコードの例は次のとおりです。
c++ - ラムダでの再帰呼び出し (C++11)
重複の可能性:
c++0x の再帰ラムダ関数
次のように記述した場合、ラムダを再帰的に呼び出すことができないのはなぜですか。
コンパイル エラー ( ideone )が発生します。
エラーの意味は何ですか?
これを書けない理由が分かりました:
i
の型は初期化から推測する必要があるi
ため、これを書くことはできません。しかし、ラムダの場合、それはどのように重要なのでしょうか? 私が間違っていなければ、ラムダの型はそのパラメーターと戻り値の型によって決まります。何も返さない場合は本体に依存しません (この場合、void
ラムダ本体の他のステートメントに関係なく、戻り値の型は と推定されます)。
とにかく、回避策があり、std::function
代わりに次のように使用できます。
罰金をコンパイルします(ideone)。auto
しかし、バージョンがコンパイルされない理由を知りたいと思っています。
c++ - 参照によって引き起こされた予期しないコピー構築:私は何を間違っているのですか?
OPC
への参照を作成しているだけなのに、のコピーコンストラクターが呼び出されている複雑なテンプレートコードがありますOPC
(実際のインスタンスはOP_S
、の子クラスとしてOPC
、コピーコンストラクターの呼び出しにはならないはずです)。
gcc4.6.1を使用しています
コードは以下のとおりです。
以下のJamesMcNellisが指摘したように答えauto&
てください-の代わりに必要ですauto
。