問題タブ [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++ - 自動生成されたクラスメンバー?
クラスを作成するとき、指定しないと自動生成される3つのコンストラクタ/デストラクタを知っています。operator=
も自動作成されます。
operator==
または他の比較演算子は自動生成されますか?作成された他のメンバーまたはメンバー関数はありますか?this
ポインタはどうですか?
c++ - auto を使用して const_iterator を取得するにはどうすればよいですか?
const_iterator
最初の質問: auto を使用して「強制」することは可能ですか? 例えば:
が指すものを変更するのではなく、クエリを実行したいだけcity_it
なのでcity_it
、map<int>::const_iterator
. しかし、auto を使用すると、city_it
は の戻り値の型と同じになりmap::find()
ますmap<int>::iterator
。なにか提案を?
c++ - C++11 のクラス メンバー初期化子で auto を使用できますか?
C++ にはクラス メンバー初期化子がありますが、非静的メンバーに対して自動/静的型推定を使用できないようです。
それは機能しません (少なくとも clang では: Apple LLVM バージョン 4.2 (clang-425.0.24))。
これは単なるコンパイラのバグですか、それとも標準ではこれをサポートする必要がないのでしょうか (もしそうなら、なぜできないのでしょうか)?
c++ - C++ で「auto」を使用するのが適切なのはいつですか?
C++ プログラムでいつ「auto」を使用するかについて、一貫したルールを自分で考え出すのに苦労しています。これが私の賛否両論のリストです。おそらく、あなたの意見を教えてくれると助かります。
プロ:
'auto' は、複雑で大きなテンプレート宣言を回避するのに適しています (たとえば、STL コンテナーに対して反復変数を定義するための auto の古典的な使用例)。
'auto' は将来を見据えたコードに適しています。たとえば、int の配列を unsigned int に変更したい場合、その配列の要素を参照するときに「auto」を使用すると、自動的に更新されます。もちろん、配列に typedef を使用していれば、それも発生したでしょう。
短所:
「auto」はコードを読みにくくします。宣言がポインタなのか値なのかわかりません。コンストラクタとデストラクタがあるかどうかはわかりません。
「自動」は私を怠惰にします。型のことは忘れて、コードを書くだけです。しかし、C++ では、型はプログラムのセマンティクスにとって非常に重要です。
皆さんはどんな時にオートを使いますか? また、いつ使用したくないですか?
c++ - Visual Studio と G++ の Decltype とフレンド関数
ベクトル計算を行うための C++ コードを書いていました。std::array
インスタンスの薄いラッパーだけが不可欠です。begin()
バッキング配列の先頭に反復子を返すために、非メンバー関数をオーバーロードしたかったのです。auto
これを行うために、戻り値の型と末尾の戻り値の型を持つ単純なフレンド関数を作成し、それを使用decltype
して呼び出しをメンバー変数に転送しました。
コンパイルできず、その理由がわかりませんでした。小さな例をいじり始めたところ、次のコードが G++ 4.7 ではコンパイルできるが、最新の Visual Studio 2012 Professional ではコンパイルできないことがわかりました。
奇妙なことに、関数elts
の宣言の前に のプライベート宣言が来た場合にのみ、このコードは G++ でコンパイルされました。begin()
いずれにせよ、ここにあるのはどのコンパイラですか? Visual Studio または G++?
編集:VS2012が与えたコンパイルエラーはerror C2228: left of '.elts' must have class/struct/union
c++ - 具体的な名前でインスタンスのクラスを参照せずにメンバー関数のアドレスを取得しますか?
auto
キーワードを取得したので、クラスを静的に参照することなく、クラス インスタンスのメンバーのアドレスを取得できるようにしたいと考えています。
例: (オールドスクール)
自動を使用するc++ 11???
ただし、&foo.memfun はコンパイルされません。これに対する構文/標準的なアプローチは何ですか? 確かに、回避できるのであれば、具体的な型の foo を参照したくありませauto
ん。
c++ - C++11: プライベート メンバー セキュリティ
次のコードを考えてみましょう。
そして、コンパイラ (gcc 4.7.2) は、それA::B
が非公開であると叫びます。わかった。したがって、コードを次のように変更します。
そして、それは叫びません:
つまり、 のインスタンスを作成することはできませんがA::B
、使用することはできます。それで、新しい変更(私の質問の鍵)。
そして出力:
ここでの問題は、A::B
プライベートであること (したがって、そのコンストラクター、コピー コンストラクターなど) は何ですか?
c++ - ファンクターにautoを使用した型演繹
私はC++11の機能に比較的慣れていません。自動機能と、それがどのようにファンクターをタイプ推論するかについて質問があります。次のコードスニペットについて考えてみます。
auto(およびstd :: function)は関数に対しては正常に機能しますが、関数オブジェクトに対しては失敗します(型推定)。どうしてこれなの?ここでタイプ控除の基本的なものが欠けています。
(私はVisual Studio 2012を使用しています)
c++ - foreach(int i.. と foreach(auto i..) の違い
Mac OX (LLVM 4.2) に付属の Clang コンパイラで C++11 機能を試していますが、次の結果に困惑しています。
実行中の環境で保留中ですが、次のようなさまざまな出力が得られます。
異なる結果が得られるのはなぜですか?