
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<state_tag> 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<is_pseudo_exit<StateType>::type,void>::type boost::msm::back::state_machine<Derived,HistoryPolicy,CopyPolicy>::execute_entry(StateType *,const EventType &,FsmType &,boost::msm::back::dummy<__formal>)' : could not deduce template argument for 'StateType *' from 'const boost::proto::exprns_::expr<Tag,Args,Arity>' 1> with 1> [ 1> Derived=`anonymous-namespace'::player_, 1> HistoryPolicy=boost::msm::back::NoHistory, 1> CopyPolicy=boost::msm::back::DeepCopy, 1> __formal=2 1> ] 1> and 1> [ 1> Tag=boost::proto::tag::address_of, 1> Args=boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal,boost::proto::argsns_::term<boost::msm::front::state_tag>> &>, 1> Arity=1 1> ] I have another workaround but it requires more typing and is quite ugly, so any help would be greatly appreciated. Thanks, Christophe _________________________________________________________________ Windows Live™: Keep your life in sync. Check it out! http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_allup_explore_012009