Boost.Signals FAQいいえ。 コンパイラは、シグナルをメンバとして持つクラスに対してコピーコンストラクタならびに代入演算子を生成することはできないが、あなたがコピーコンストラクタや代入演算子を書くのは自由だ。 ただしシグナルをコピーしようと試みないように。
いいえ。 マルチスレッド環境下で 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 識別子を用いてコンパイルされたモジュールとのリンク互換性を失う。