これらの2つの奇妙なコード行はどういう意味ですか?
thread_guard(thread_guard const&) = delete;
thread_guard& operator=(thread_guard const&) = delete;
これらの2つの奇妙なコード行はどういう意味ですか?
thread_guard(thread_guard const&) = delete;
thread_guard& operator=(thread_guard const&) = delete;
これ=delete
はC++0xの新機能です。これは、ユーザーがそのような関数を使用すると、コンパイラはすぐにコンパイルを停止し、「この関数は削除されました」と文句を言う必要があることを意味します(デフォルトおよび削除された関数-BjarneStroustrupによるC++ 0x FAQのデフォルトの制御も参照)。
はthread_guard(thread_guard const&)
コピーコンストラクタでありthread_guard& operator=(thread_guard const&)
、代入コンストラクタです。thread_guard
したがって、これら2行を合わせると、インスタンスのコピーが無効になります。
これは、クラスの特定の機能を無効にするための新しいC++0x構文です。例については、ウィキペディアを参照してください 。ここでは、クラスthread_guard
はコピーも割り当てもできないことを示しています。