問題タブ [noncopyable]

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.

0 投票する
1 に答える
131 参照

c++11 - std::unordered_map < K、boost::ptr_deque < T > > の operator[] (K const &) と emplace の違い

上記の例では、コメント アウトされた行は、コピーできない の要素をコピーしようとするため、コンパイルされませんptr_deque。ただし、push_backフォームは機能します。

私はそれoperator [] (K const &)が単にreturn emplace(k, mapped_type()).first->secondorであると考えていましたがreturn insert(value_type(k, mapped_type())).first->second、これは本質的にコメントアウトされたステートメントです

どうやらそうではないようです。内部で魔法operator []を実行しますか?placement new

それとも何か特別なことがありptr_dequeますか?

私はgcc-6.1とブースト1.59を使用しています

0 投票する
4 に答える
1878 参照

c++ - コピー不可、移動不可の要素型を持つ C++ コンテナー

コピーも移動もできない要素のコンテナが必要です。これらの要素はデフォルトで構築可能ではありませんが、それらのコンストラクタは同一の引数を取得します。

コンテナーのサイズは、その存続期間中は変更されません。組み込みの配列と同じくらい単純である必要がありますが、そのサイズはコンストラクターが呼び出される実行時に決定されます。

を使用することによって発生するメモリ割り当てと間接化のオーバーヘッドなしでそれを実装する簡単な方法はありstd::vector<std::unique_ptr<T>>ますか?

0 投票する
4 に答える
340 参照

c++ - クラスをコピー不可にする: 未定義のプライベート メソッドと削除されたメソッド

C++11 より前は、次のようなコードを見ました。

C++11 (およびそれ以降) の場合、次のようなコードが表示されます。

それらは同じように動作しますか? そうでない場合は、説明してください。

参考:https ://ariya.io/2015/01/c-class-and-preventing-object-copy