問題タブ [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の古い使用法(c ++ 03)がC ++ 11でコンパイルされないのはなぜですか?
auto
これは変数のデフォルトであるため(静的とは反対)、以前は少し使用されていました。質問を参照して
ください。ただし、おそらく自明のように、このキーワードが使用された有効なC++03コードを検討してください。
C ++ 03でコンパイルされ、C++11ではコンパイルされません。C ++ 03との下位互換性がない理由はありますか?このキーワードが使用されなかったという標準的な委員会の意見の源は何でしたか?キーワード使用の統計はありますか?
ところで、私はgccでテストしました-多分これはコンパイラのバグですか?
c++ - テンプレートパラメータとしてautoを使用する
-std=c++11
フラグを設定してGCC4.7.1を使用して以下をコンパイルしようとしています。
さまざまなタイプ(int string、bool)およびサブ構造(list、map)の大量のJsonデータを含むオブジェクトを作成しようとしているため、コンパイル時にフィールド値のタイプを宣言できません。時間なので、auto
キーワードを使ってみようと思いました。
しかし、コンパイルしようとすると、次のようになります。
テンプレート引数として使用する特別な方法はありauto
ますか、それとも不可能ですか?
c++ - auto で中かっこを使用して値を初期化し、それをこの関数に渡すことができないのはなぜですか
auto で値を初期化して、パラメーターとして decltype を期待する関数に渡すことができないのはなぜですか?
シーンを設定して、小さなプログラムをお見せしましょう。
値を返す関数を次に示します。
この場合、たまたま整数ですが、戻り値の型は変更される可能性があります。
そのため、この次の関数は次のように記述されます。
関数の戻り値の型を変更する場合、この関数の減速を変更する必要はありません。はい、関数の定義が新しい型を正しく処理しない可能性があります。または、関数の戻り値の型が void に変更された場合、問題が発生しますが、それは私の問題とは関係ありません。
では、なぜ var4 は int ではなく initializer_list なのですか?
Function が int を返すことを auto で推測してから
、減速を var3 に似たものに変更することはできませんか?
c++ - C++11 segfault の範囲ベースの for ループですが、通常の for ループではありません
最初のループではセグメンテーション違反が発生しないのに、2 番目のループではセグメンテーション違反が発生するのはなぜですか?
c++ - c++ 11でのポインターの「自動」型割り当てには「*」が必要ですか?
変数がポインターである場合、それを「auto」型の変数に割り当てる場合、「*」を指定しますか?
これが c++11 でどのように機能するかについて少し混乱していますauto
(これは c++11 の新機能ですよね?)
更新:上記を修正して、ベクターが実際に関数にどのように取り込まれているかをより明確にしました。返されたポインターを変数に割り当てようとしています。混乱させて申し訳ありません
c++ - メタプログラミングによる自動+静的クラス内定数初期化
Angle
モジュロ360度の縮小値を内部的に格納するクラスを実装する次の簡略化されたテンプレートメタプログラミングコードについて考えてみます。
Ideoneの出力
Visual C ++ 2010 Expressでは可能ですstatic auto const = Modulus<N, 360>::value
が、MinGW gcc 4.7.2(Nuwen distro)またはIdeone(gcc 4.5.1)では、型を明示的に示すか、完全なモジュラー式でstatic int const value = Modulus<N, 360>::value
使用する必要があります。auto
static auto const value = N % 360;
質問:新しいC ++ 11標準によると、どのコンパイラが正しいですか?
c++ - ブロックが実行される前後にいくつかの命令を実行します
いくつかの変数を事前に初期化してコードのブロックを起動できる構文が必要です。コードのブロックが実行された後、他の変数の割り当てを解除するためにいくつかのコードを実行する必要があります。
したがって、ブロック内に記述されたコードは、他のいくつかの操作の途中で実行する必要があります。
これが私が得たものです:
表示されているコードは、アプリケーション(C ++オブジェクト)を初期化するだけなので、次のように使用します。
このようにして、アプリケーションは常に初期化され、ブロック後に起動されると確信しています。
しかし、私がこのように書くことができるように、丸括弧を遠ざける方法があるかどうか疑問に思います:
この方法も機能しますが、構文が軽くなるはずです。
c++ - 自動変数を保存して後で使用する方法はありますか?
コードのブロックを保存して後で使用しようとしているので、自動変数をグローバルとして宣言し、割り当ててから、ブロックを呼び出すことができます。
それで:
しかし、問題は構文エラーが発生することです:宣言した瞬間に変数を初期化する必要があるようですので、そのブロックを記憶して後で使用することはできません。ブロックをグローバル変数として記憶する必要がありますまたはクラス内。また、クラス内では、autoをインスタンス変数として宣言することは許可されていません。方法はありますか?
c++ - auto のコンパイラの問題? エラー: declarator-list では、'auto' は常に同じ型に推論する必要があります
エラー: declarator-list では、'auto' は常に同じ型に推論する必要があります
c++ - 関数から shared_ptr を返す
私は C++11 に非常に慣れていないので、拡張機能をまだ試しています。auto
特にテンプレート変数を扱う場合は、このキーワードが非常に便利だと思います。これは、
課題ができるようになりました
それ以外の
ここでの問題は、ポインターが Herb Sutter が推奨t1
するように保持したいということです。したがって、 のようにテンプレート引数の型に名前を付けずに、 の戻り値をashared_ptr
に格納したいと思います。create()
shared_ptr
t2