1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<section last-revision="$Date: 2003/03/12 23:27:23 $">
<title>Frequently Asked Questions</title>
<qandaset>
<qandaentry>
<question>
<para>Don't noncopyable signal semantics mean that a class
with a signal member will be noncopyable as well?</para>
</question>
<answer>
<para>No. The compiler will not be able to generate a copy
constructor or copy assignment operator for your class if it
has a signal as a member, but you are free to write your own
copy constructor and/or copy assignment operator. Just don't
try to copy the signal.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Is Boost.Signals thread-safe?</para>
</question>
<answer>
<para>No. Using Boost.Signals in a multithreaded concept is
very dangerous, and it is very likely that the results will be
less than satisfying. Boost.Signals will support thread safety
in the future.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>How do I get Boost.Signals to work with Qt?</para>
</question>
<answer>
<para>When building with Qt, the Moc keywords
<code>signals</code> and <code>slots</code> are defined using
preprocessor macros, causing programs using Boost.Signals and
Qt together to fail to compile. Although this is a problem
with Qt and not Boost.Signals, a user can use the two systems
together by defining the <code>BOOST_SIGNALS_NAMESPACE</code>
macro to some other identifier (e.g., <code>signalslib</code>)
when building and using the Boost.Signals library. Then the
namespace of the Boost.Signals library will be
<code>boost::BOOST_SIGNALS_NAMESPACE</code> instead of
<code>boost::signals</code>. To retain the original namespace
name in translation units that do not interact with Qt, you
can use a namespace alias:</para>
<programlisting>
namespace boost {
namespace signals = BOOST_SIGNALS_NAMESPACE;
}
</programlisting>
</answer>
</qandaentry>
</qandaset>
</section>
|