タグ付けされた質問 「c++11」

このタグは、C ++ 11としてコンパイルする必要があるコードに使用します(C ++ 14以降で導入された機能は使用しません)。


17
Eclipse CDTでC ++ 11 / C ++ 0xサポートを有効にする方法は?
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 これは、C ++ 11コードの一部の例です。 auto text = std::unique_ptr<char[]>(new char[len]); Eclipseエディターは以下について不満を述べています。 Function 'unique_ptr' could not be resolved Makefileコンパイルは正常に動作します。Eclipseがこれらの種類のエラーについて文句を言うのをやめるには?

8
キャプチャラムダを関数ポインタとして渡す
関数ポインターとしてラムダ関数を渡すことは可能ですか?もしそうなら、私はコンパイルエラーを受け取っているので私は何かを間違ってしているに違いありません。 次の例を考えてみましょう using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x > 3; } }; return 0; } これをコンパイルしようとすると、次のコンパイルエラーが発生します。 In function 'int main()': 17:31: error: the value of 'x' is …

2
最新のC ++でパフォーマンスを無料で取得できますか?
C ++ 11/14は、単にC ++ 98コードをコンパイルする場合でも、パフォーマンスを向上させることができると主張されることがあります。正当化は通常、移動のセマンティクスの線に沿っています。場合によっては、右辺値コンストラクターが自動的に生成されるか、STLの一部となることがあります。今、これらのケースが以前にRVOまたは同様のコンパイラ最適化によって実際にすでに処理されていたかどうか疑問に思っています。 私の質問は、新しい言語機能をサポートするコンパイラを使用して、変更なしでより高速に実行されるC ++ 98コードの実際の例を教えてもらえるかどうかです。コピーの省略を行うのに標準準拠のコンパイラーは必要ないことを理解しています。そのため、移動のセマンティクスによって速度が向上する可能性があります。 編集:明確にするために、私は新しいコンパイラが古いコンパイラよりも高速であるかどうかを尋ねているのではなく、コンパイラフラグに-std = c ++ 14を追加するコードがある場合、それはより高速に実行されます(コピーを避けますが、移動セマンティクス以外に何かを思い付くことができます、私も興味があります)

7
C ++ 11でメンバー以外の開始関数と終了関数を使用する理由
すべての標準コンテナには、そのコンテナのイテレータを返すためのbeginおよびendメソッドがあります。ただし、C ++ 11には、と呼ばれる無料の関数と、およびのメンバー関数を呼び出すことが明らかに導入されstd::beginてstd::endいます。だから、書く代わりにbeginend auto i = v.begin(); auto e = v.end(); あなたは書くでしょう auto i = std::begin(v); auto e = std::end(v); Herb Sutterは、彼の講演「Writing Modern C ++」で、コンテナーの開始イテレーターまたは終了イテレーターが必要な場合は常に無料の関数を使用する必要があると述べています。しかし、なぜあなたがそうしたいのかについて彼は詳細には触れません。コードを見ると、1つの文字をすべて節約できます。したがって、標準のコンテナに関する限り、無料の関数はまったく役に立たないようです。Herb Sutterは、非標準のコンテナにはメリットがあると述べましたが、ここでも詳細には触れませんでした。 では、問題は、の無料の関数バージョンが正確に何でstd::beginありstd::end、対応するメンバー関数のバージョンを呼び出す以外に何をするのか、そしてなぜそれらを使用したいのでしょうか?

3
「std :: cout」への未定義の参照
これを例にしましょう: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } それはエラーを投げます: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)' main.o: In function `__static_initialization_and_destruction_0(int,int)': main.cpp:(.text+0x3d): undefined reference …
194 c++  c++11  gcc  cout 

9
C ++ 11で廃止されたC ++イディオムはどれですか?
新しい標準では、物事を行うための新しい方法があり、多くは古い方法よりも優れていますが、古い方法はまだ問題ありません。また、下位互換性の理由から、新しい標準が公式にあまり非推奨にならないことも明らかです。したがって、残っている問題は次のとおりです。 C ++ 11スタイルよりも確実に劣るコーディングの古い方法と、代わりに今できることは何ですか? これに答えるには、「自動変数を使用する」などの明らかなことをスキップできます。
192 c++  c++11  c++-faq 


2
関数内の静的constexpr変数は意味がありますか?
関数(たとえば、大きな配列)内に変数がある場合、両方staticとそれを宣言することは意味がありconstexprますか?constexpr配列がコンパイル時に作成されることを保証するので、static役に立たないでしょうか? void f() { static constexpr int x [] = { // a few thousand elements }; // do something with the array } されstatic、実際に生成されたコードや意味論の面でそこに何かをやって?
192 c++  static  c++11  constexpr 

2
C ++ 11と重複するBoost機能はどれですか?
私はC ++のスキルを数年前に棚に置いていましたが、今は再び必要になったときに状況が変わったようです。 C ++ 11を手に入れました。私の理解では、多くのBoost機能と重複しています。 それらの重複が存在するいくつかの概要はありますか?Boostライブラリはレガシーになるでしょう、Boostの代わりにどのC ++ 11機能を使用するべきか、どちらを使用しない方が良いか、という推奨はありますか?
191 c++  boost  c++11 

5
ノーリターンのポイントは何ですか?
[dcl.attr.noreturn]は次の例を提供します: [[ noreturn ]] void f() { throw "error"; // OK } しかし[[noreturn]]、関数の戻り値の型が既にあるので、私は何の意味があるのか​​わかりませんvoid。 では、noreturn属性のポイントは何ですか?どのように使用することになっていますか?


16
保護されたコンストラクターまたはプライベートコンストラクターのみを含むクラスで:: std :: make_sharedを呼び出すにはどうすればよいですか?
動作しないこのコードがありますが、その意図は明らかだと思います: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); } しかし、コンパイルするとこのエラーが発生します。 g++ -std=c++0x -march=native -mtune=native -O3 -Wall testmakeshared.cpp In file included from …
187 c++  c++11  shared-ptr 

6
静的constexpr char []への未定義の参照
static const charクラスに配列が必要です。GCCは不平を言って、私はを使用するべきだと私に言ったconstexprが、今は未定義の参照であることを私に言っている。配列を非メンバーにすると、コンパイルされます。何が起こっている? // .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // undefined reference to baz }

4
std :: auto_ptrからstd :: unique_ptr
新しい標準(および一部のコンパイラですでに利用可能なパーツ)が登場したことで、新しいタイプstd::unique_ptrはの代わりになるはずですstd::auto_ptr。 それらの使用法は正確にオーバーラップしていますか(コードでグローバル検索/置換を実行できます(そうするわけではありませんが、そうした場合))、またはドキュメントを読んでも明らかでないいくつかの違いに注意する必要がありますか? また、直接置換する場合は、単にstd::auto_ptr?を改善するのではなく、新しい名前を付けるのはなぜですか。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.