[fusion] Patch for release daw-msvc71

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_; }

David Walthall <walthall <at> stanfordalumni.org> writes:
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).
I tried to look at this a while back, but the tests always passed when i ran them manually so i didnt get very far. My release branch tests are all green at the moment but i have a couple of failures on Trunk, so it will be interesting to see if the change fixes those as well.

David Walthall wrote:
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_; }
Unless the Fusion developers think this is critical for 1.36, I'd rather hold it for the next release. I'd like to ship 1.36 tomorrow (Saturday), and that doesn't leave enough time for sufficient testing. --Beman

Beman Dawes wrote:
David Walthall wrote:
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.
[...]
Unless the Fusion developers think this is critical for 1.36, I'd rather hold it for the next release. I'd like to ship 1.36 tomorrow (Saturday), and that doesn't leave enough time for sufficient testing.
I'd rather not do the patch now. It's not critical. For me, VC7.1 is all green. Thanks for the patch anyway. I'll apply it to head and see how it goes. Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net
participants (4)
-
Beman Dawes
-
David Walthall
-
Joel de Guzman
-
Richard Webb