
I have a patch that fixes an INTERNAL COMPILER ERROR on the release branch of fusion for daw-msvc71 (which did not show up for the other msvc 7.1 runner). [If it matters, this is licensed under the Boost license.] Basically, putting the return type as a typedef fixes the issue. I realize that there are several other places in the file with similar typedefs, but this was the minimal change to get the two failing examples to compile. C:\boost_testing\boost\boost\fusion\container\deque\detail>svn diff Index: keyed_element.hpp =================================================================== --- keyed_element.hpp (revision 47983) +++ keyed_element.hpp (working copy) @@ -40,6 +40,9 @@ typedef Rest base; typedef fusion_sequence_tag tag; using Rest::get; + private: + typedef typename add_reference<Value>::type ValueRefType; + public: template<typename It> static keyed_element @@ -64,7 +67,7 @@ return value_; } - typename add_reference<Value>::type get(Key) + ValueRefType get(Key) { return value_; }