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

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

7
C ++でのステートメント順序の強制
決まった順序で実行したいステートメントがいくつかあるとします。最適化レベル2でg ++を使用したいので、一部のステートメントを並べ替えることができます。ステートメントの特定の順序を強制するためにどのツールが必要ですか? 次の例を考えてみましょう。 using Clock = std::chrono::high_resolution_clock; auto t1 = Clock::now(); // Statement 1 foo(); // Statement 2 auto t2 = Clock::now(); // Statement 3 auto elapsedTime = t2 - t1; この例では、ステートメント1〜3が指定された順序で実行されることが重要です。しかし、コンパイラはステートメント2が1と3から独立していると考え、次のようにコードを実行できないのでしょうか。 using Clock=std::chrono::high_resolution_clock; foo(); // Statement 2 auto t1 = Clock::now(); // Statement 1 auto t2 = Clock::now(); // …

4
C ++モジュール-なぜC ++ 0xから削除されたのですか?彼らは後で戻ってきますか?
C ++ 0xのモジュールに関するこの古いC ++ 0xドラフトを発見しました。 アイデアは、コンパイル中にモジュールファイルを生成し、次に他の.cppファイルによって使用される.cppファイルのみを書き込むことにより、現在の.h / .cppシステムから抜け出すことでした。 これは本当に素晴らしい機能のようです。 しかし私の質問は、なぜC ++ 0xからそれを削除したのですか?技術的な問題が多すぎたためでしょうか。時間不足?そして、彼らはC ++の旧バージョンのためにそれに取り組むことを検討すると思いますか?

2
「……」トークンの意味は何ですか?つまり、パラメータパックの二重省略記号演算子
新しいC ++ 11ヘッダーのgccの現在の実装を閲覧しているときに、「......」トークンに遭遇しました。次のコードが[ideone.comを介して]正常にコンパイルされることを確認できます。 template <typename T> struct X { /* ... */ }; template <typename T, typename ... U> struct X<T(U......)> // this line is the important one { /* ... */ }; それで、このトークンの意味は何ですか? 編集:SOは質問タイトルの「......」を「...」にトリミングしたように見えますが、私は本当に「......」を意味していました。:)

5
std :: next_permutation実装の説明
std:next_permutation実装方法に興味があったので、gnu libstdc++ 4.7バージョンを抽出し、識別子とフォーマットをサニタイズして、次のデモを作成しました... #include <vector> #include <iostream> #include <algorithm> using namespace std; template<typename It> bool next_permutation(It begin, It end) { if (begin == end) return false; It i = begin; ++i; if (i == end) return false; i = end; --i; while (true) { It j = i; --i; if …

5
パラメータを正しく渡す方法は?
私はC ++初心者ですが、プログラミング初心者ではありません。私はC ++(c ++ 11)を学ぼうとしていますが、最も重要なこと、つまりパラメーターを渡すことは、ちょっとわかりません。 私はこれらの簡単な例を考えました: すべてのメンバーのプリミティブ型を持つクラス: CreditCard(std::string number, int expMonth, int expYear,int pin):number(number), expMonth(expMonth), expYear(expYear), pin(pin) メンバーとしてプリミティブ型と1つの複合型を持つクラス: Account(std::string number, float amount, CreditCard creditCard) : number(number), amount(amount), creditCard(creditCard) メンバーとしてプリミティブ型といくつかの複合型の1つのコレクションを持つクラス: Client(std::string firstName, std::string lastName, std::vector<Account> accounts):firstName(firstName), lastName(lastName), accounts(accounts) アカウントを作成するときは、次のようにします。 CreditCard cc("12345",2,2015,1001); Account acc("asdasd",345, cc); このシナリオでは明らかにクレジットカードが2回コピーされます。そのコンストラクタを次のように書き換えると Account(std::string number, float amount, CreditCard& creditCard) …
108 c++  c++11 

3
std :: shared_ptrスレッドセーフティの説明
私はhttp://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.htmlを読んでいますが、いくつかのスレッドセーフティの問題はまだわかりません: 標準では、参照カウントがスレッドセーフで処理され、プラットフォームに依存しないことが保証されています。 同様の問題-標準では、1つのスレッド(最後の参照を保持している)のみが共有オブジェクトで削除を呼び出すことが保証されていますよね? shared_ptrは、それに格納されているオブジェクトのスレッドセーフを保証しませんか? 編集: 疑似コード: // Thread I shared_ptr<A> a (new A (1)); // Thread II shared_ptr<A> b (a); // Thread III shared_ptr<A> c (a); // Thread IV shared_ptr<A> d (a); d.reset (new A (10)); スレッドIVでreset()を呼び出すと、最初のスレッドで作成されたAクラスの以前のインスタンスが削除され、新しいインスタンスに置き換えられますか?さらに、IVスレッドでreset()を呼び出した後、他のスレッドには新しく作成されたオブジェクトのみが表示されますか?
106 c++  c++11  shared-ptr 


2
constexprはインラインを意味しますか?
次のインライン関数について考えてみます。 // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } そしてconstexprの同等バージョン: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int x); constexpr int f(const int x) { return 2*x; …

8
C ++ 11サポートを確認するにはどうすればよいですか?
コンパイラがC ++ 11の特定の機能をサポートしているかどうかをコンパイル時に検出する方法はありますか?たとえば、次のようなもの: #ifndef VARIADIC_TEMPLATES_SUPPORTED #error "Your compiler doesn't support variadic templates. :(" #else template <typename... DatatypeList> class Tuple { // ... } #endif
104 c++  c++11 

3
C ++ 14はC ++に新しいキーワードを追加していますか?
C ++標準委員会は、新しいキーワードを言語に追加することをためらう傾向がありますが、C ++ 11ではそうではありませんでした。いくつかの例: constexpr decltype thread_local auto // New usage noexcept nullptr static_assert alignof alignas C ++ 14で導入された新しいキーワードはありますか?
103 c++  c++11  keyword  c++14 

4
shared_ptrはどこにありますか?
shared_ptrがどこにあるのかを数時間探した後、私は今とてもイライラしています。私が目にする例はどれも、ヘッダーを含むshared_ptr(そして機能する)完全なコードを示していません。単に述べるだけstdでtr1、<memory>まったく役に立たない!ブーストをダウンロードしましたが、それでも表示されません!誰かがそれを見つける場所を正確に教えてくれますか? 欲求不満を解消させてくれてありがとう! 編集:タイトルが変更されたようです。申し訳ありません。つまり... shared_ptrが「C ++バージョンに依存する」ことは私には明確ではなかったためでもありました->私が環境について述べなかった理由->したがって、おそらく私がそれを見つけることが非常に困難であった理由。 MSVS2008に取り組んでいます。 編集2:理由はわかりませんが、[memory]と[boost / tr1 / memory.hpp]と[boost / tr1 / tr1 / memory]を含めて、どこからでもshared_ptrを探していました。もちろん、できませんでしたない すべての応答をありがとう。

2
std :: move()はどのようにして値をRValuesに転送しますか?
の論理を完全に理解していないことに気づきましたstd::move()。 最初はグーグルで検索しましたが、使用方法についてのドキュメントしかstd::move()なく、構造がどのように機能しているかはわかりません。 つまり、私はテンプレートメンバー関数が何であるかを知っていますがstd::move()、VS2010で定義を調べると、それでも混乱します。 std :: move()の定義は以下になります。 template<class _Ty> inline typename tr1::_Remove_reference<_Ty>::_Type&& move(_Ty&& _Arg) { // forward _Arg as movable return ((typename tr1::_Remove_reference<_Ty>::_Type&&)_Arg); } 最初に奇妙なのは、パラメータ(_Ty && _Arg)です。これは、以下のように関数を呼び出すと、 // main() Object obj1; Object obj2 = std::move(obj1); 基本的には // std::move() _Ty&& _Arg = Obj1; しかし、すでにご存じのように、LValueをRValue参照に直接リンクすることはできません。 _Ty&& _Arg = (Object&&)obj1; ただし、std :: move()がすべての値に対して機能する必要があるため、これは馬鹿げています。 これがどのように機能するかを完全に理解するために、私はこれらの構造体も確認する必要があります。 …

4
std :: arrayのデフォルトの初期化?
C ++ 11 std::arrayでは、構文std::array<T, N> x;が配列のすべての要素をデフォルトで初期化することが保証されますか? 編集:そうでない場合、すべての要素をデフォルト値に初期化するためにすべての配列(サイズがゼロの配列を含む)で機能する構文はありますか? 編集:cppreferenceで、デフォルトのコンストラクタの説明は次のように述べています: (constructor) (implicitly declared) (public member function) default-constructs or copy-constructs every element of the array そう答えはイエスかもしれません。しかし、私はそれを標準または将来の標準に従って確認したいと思います。

12
Visual Studioは新しいC / C ++標準をサポートしていますか?
私はC99とC ++ 11と、いつか使うのが良いかもしれない言語標準に追加されているこれらすべての完全に甘いものについて読み続けています。ただし、現在Visual StudioでC ++を作成することは困難です。 標準の新しいものはビジュアルスタジオに追加されますか、それともMicrosoftは新しいC#バリアントを追加することに関心がありますか? 編集:受け入れられた回答に加えて、Visual C ++チームのブログを見つけました。 http://blogs.msdn.com/vcblog/ そして具体的には、その中のこの投稿: https://web.archive.org/web/20190109064523/https://blogs.msdn.microsoft.com/vcblog/2008/02/22/tr1-slide-decks/ 非常に便利。ありがとう!

2
標準C ++ライブラリに含まれる例外クラス
標準C ++ライブラリに含まれている例外クラスとは何ですか?それらは何に使用する必要がありますか?私はいくつかの新しいC ++ 11例外があることを知っていますが、それらが何であるか、またはどこにあるのかわかりません。
102 c++  exception  c++11  stl 

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