[Proto] fatal error C1001: An internal error has occurred in the compiler.
Hi all,
Here am I already at the 2nd compiler (VC9SP1) crash of the week (not kidding...):
fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\p2symtab.c', line 5809)
Attached is a test file producing the problem. The crash happens when I add BOOST_PROTO_DEFINE_OPERATORS. Am I doing something wrong?
Sadly, this was a workaround to avoid deriving my class from proto::terminal because of a problem (supposedly) created by the address-of operator. Can someone save my day and tell me if there is a way to deactivate this operator for terminals?
Concretely, I have:
struct Empty: public state<>, proto::terminal
I have another workaround but it requires more typing and is quite ugly, so any help would be greatly appreciated. To disable adressof operator, just disable it in your gramamr using
christophe henry wrote: proto::not_ -- ___________________________________________ Joel Falcou - Assistant Professor PARALL Team - LRI - Universite Paris Sud XI Tel : (+33)1 69 15 66 35
christophe henry wrote:
Hi all,
Here am I already at the 2nd compiler (VC9SP1) crash of the week (not kidding...):
fatal error C1001: An internal error has occurred in the compiler. (compiler file 'f:\dd\vctools\compiler\utc\src\p2\p2symtab.c', line 5809)
Attached is a test file producing the problem. The crash happens when I add BOOST_PROTO_DEFINE_OPERATORS. Am I doing something wrong?
I can't reproduce the error on msvc-9.0 sp1 either with or without the BOOST_PROTO_DEFINE_OPERATORS line.
Sadly, this was a workaround to avoid deriving my class from proto::terminal because of a problem (supposedly) created by the address-of operator. Can someone save my day and tell me if there is a way to deactivate this operator for terminals? Concretely, I have:
struct Empty: public state<>, proto::terminal
Which brings me, here:
&::boost::fusion::at_key<State>(xxx) // xxx being a fusion set containing Empty
the following problem:
1>f:\projects\MSM2\SM\boost/msm/back/state_machine.hpp(1061) : error C2784: '::boost::enable_if
::type boost::msm::back::state_machine ::execute_entry(StateType *,const EventType &,FsmType &,boost::msm::back::dummy<__formal>)' : could not deduce template argument for 'StateType *' from 'const boost::proto::exprns_::expr '
Looks like the error is happening in msm. That doesn't mean it's not
caused by Proto, but it means you're not posting the actual code that's
failing. I can't help without the actual code.
Anyway, Joel's advice is spot-on. You can disable Proto's operator& by
using proto::extends instead of straight inheritance, and specify the
grammar of your DSEL in the domain parameter. Your grammar could be as
simple as: proto::not_
participants (3)
-
christophe henry
-
Eric Niebler
-
joel