boost::variant with boost::signals leads to Internal Compiler Error with MSDEV 7.1

Hi Environment: MS 7.1 compile with MS implementation of STL Boost 1.32.0 Summary: I get an internal compiler error using boost::variant as a parameter of a boost::signal compiling with MSDEV 7.1, but not with gcc3.3/3.4 or MinGW (3.5). Does anyone knows a workaround other than not using boost::signals? Details Using a signal with a variant of 2 simple classes (see code snippet) leads to an internal compiler error C1001. Using pragma command to turn optimisation off as Suggested by the compiler does not change a thing Does anyone knows a workaround? Regards, jom Here's the bad code snippet: #include <boost/bind.hpp> #include <boost/signals.hpp> #include <boost/variant.hpp> #include <vector> class MessageException : public std::exception { public: MessageException() : std::exception( "Message error" ) {} }; class Message { public: typedef std::vector<unsigned char> Content; Message(unsigned int p, unsigned char def = ' ') : m_vector( p, def ) {} const Content& message() {return m_vector;} private: Content m_vector; }; typedef boost::variant<MessageException, Message> MessageVariant; class TestWrap { public: TestWrap(){} typedef boost::signal1<void, MessageVariant> MessageSignal; //typedef boost::signal<void (MessageVariant)> MessageSignal; void send_signal (MessageVariant& variant) { m_message_signal( variant ); } private: MessageSignal m_message_signal; };

On Dec 20, 2004, at 10:30 AM, Meißner, Joachim wrote:
I get an internal compiler error using boost::variant as a parameter of a boost::signal compiling with MSDEV 7.1, but not with gcc3.3/3.4 or MinGW (3.5).
Does anyone knows a workaround other than not using boost::signals?
Not long ago we had a bug report about problems using Variant and the Boost Graph Library together under VS 7.1. I wonder if the compiler is mis-optimizing something in the Variant library, because it is strange that both Signals and the BGL are fine on that compiler except when used with Variant. Doug

On Mon, 20 Dec 2004 16:30:35 +0100, Meißner, Joachim <meissner@rohmann.de> wrote:
Hi
Environment: MS 7.1 compile with MS implementation of STL Boost 1.32.0
Summary:
I get an internal compiler error using boost::variant as a parameter of a boost::signal compiling with MSDEV 7.1, but not with gcc3.3/3.4 or MinGW (3.5).
Does anyone knows a workaround other than not using boost::signals?
Details
Using a signal with a variant of 2 simple classes (see code snippet) leads to an internal compiler error C1001. Using pragma command to turn optimisation off as Suggested by the compiler does not change a thing
Does anyone knows a workaround?
Regards, jom
Could you get away with using a boost::function instead of a signal (i.e. do you *really* need multi-casting, connection management etc?). BTW - like Victor, your fragment doesn't ICE with my VC7.1 (version 13.10.3077) and Boost 1.32.0... Stuart Dootson
participants (3)
-
"Meißner, Joachim"
-
Doug Gregor
-
Stuart Dootson