boost::signals - can't generate assignment op.
I know that signals can't be assigned or copied, and as far as I can tell I have made sure that never happens. However, I'm still getting the warning. We have no warning policy here. Code followed by compiler output, what do I need to do?: ------------------------------------------- #include <boost/signal.hpp> #include <boost/function.hpp> struct rect {}; struct document { document() : changed_sig() {} virtual rect extents() const = 0; virtual ~document() {} boost::signals::connection attach(boost::function<void (document&)> const& slot) { return changed_sig.connect(slot); } private: boost::signal<void (document&)> changed_sig; document(document const&) {} document& operator=(document const&) { return *this;} protected: void changed(document & d) { changed_sig(d); } }; int main() { } ------------------------------------------------ 1>e:\boostvs2\include\boost\signals\trackable.hpp(163) : warning C4512: 'boost::signals::detail::bound_objects_visitor' : assignment operator could not be generated 1> e:\boostvs2\include\boost\signals\trackable.hpp(66) : see declaration of 'boost::signals::detail::bound_objects_visitor' 1>e:\boostvs2\include\boost\signals\signal_template.hpp(71) : warning C4512: 'boost::signals::detail::args1<T1>' : assignment operator could not be generated 1> with 1> [ 1> T1=document & 1> ] 1> e:\boostvs2\include\boost\signals\signal_template.hpp(344) : see reference to class template instantiation 'boost::signals::detail::args1<T1>' being compiled 1> with 1> [ 1> T1=document & 1> ] 1> e:\boostvs2\include\boost\signals\signal_template.hpp(335) : while compiling class template member function 'void boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::operator ()(T1)' 1> with 1> [ 1> R=void, 1> T1=document &, 1> Combiner=boost::last_value<void>, 1> Group=int, 1> GroupCompare=std::less<int>, 1> SlotFunction=boost::function<void (document &)> 1> ] 1> e:\boostvs2\include\boost\signal.hpp(335) : see reference to class template instantiation 'boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>' being compiled 1> with 1> [ 1> R=void, 1> T1=document &, 1> Combiner=boost::last_value<void>, 1> Group=int, 1> GroupCompare=std::less<int>, 1> SlotFunction=boost::function<void (document &)> 1> ] 1> e:\dev_workspace\experimental\scratch\scratch\main.cpp(19) : see reference to class template instantiation 'boost::signal<Signature>' being compiled 1> with 1> [ 1> Signature=void (document &) 1> ] 1>Linking...
AMDG Noah Roberts wrote:
I know that signals can't be assigned or copied, and as far as I can tell I have made sure that never happens. However, I'm still getting the warning. We have no warning policy here.
Code followed by compiler output, what do I need to do?:
The easiest thing is to suppress this warning globally. It is rarely useful, anyway. Eventually, this should probably be suppressed by Boost.Signals, though. In Christ, Steven Watanabe
Steven Watanabe wrote:
AMDG
Noah Roberts wrote:
I know that signals can't be assigned or copied, and as far as I can tell I have made sure that never happens. However, I'm still getting the warning. We have no warning policy here.
Code followed by compiler output, what do I need to do?:
The easiest thing is to suppress this warning globally. It is rarely useful, anyway. Eventually, this should probably be suppressed by Boost.Signals, though.
Darn, so there's no way to fix this? Guess suppression will have to do...or a different signal architecture.
participants (2)
-
Noah Roberts
-
Steven Watanabe