いいえ。 コンパイラは、シグナルをメンバとして持つクラスに対してコピーコンストラクタならびに代入演算子を生成することはできないが、あなたがコピーコンストラクタや代入演算子を書くのは自由だ。 ただしシグナルをコピーしようと試みないように。
いいえ。 マルチスレッド環境下で Boost.Signals を利用することは大変危険であり、 結果は満足とはほど遠いものとなるだろう。 将来 Boost.Signals はスレッドセーフをサポートするだろう。
Qt とともに構築する場合、
プロプロセッサマクロを用いて定義されている moc の予約語 signals
と slots
が、
Boost.Signals と Qt を共に利用しているプログラムのコンパイルを失敗させる。
これは Qt の問題であり Boost.Signals の問題ではないのだが、
Boost.Signals ライブラリを構築・利用するときに BOOST_SIGNALS_NAMESPACE を他の識別子 (例: signalslib) に定義することで、両方のシステムを共に使うことができる。
このとき Boost.Signals ライブラリの名前空間は boost::signals
ではなく boost::BOOST_SIGNALS_NAMESPACE
となる。
Qt と相互作用しない部分で元の名前空間名を保持しておくために、
名前空間のエイリアスを用いることができる:
namespace boost { namespace signals = BOOST_SIGNALS_NAMESPACE; }
BOOST_SIGNALS_NAMESPACE
を再定義すると、
別の BOOST_SIGNALS_NAMESPACE
識別子を用いてコンパイルされたモジュールとのリンク互換性を失う。