Boost logo

Boost Users :

Subject: [Boost-users] boost::signals - can't generate assignment op.
From: Noah Roberts (roberts.noah_at_[hidden])
Date: 2009-01-27 14:16:27


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...


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net