2014-09-09 7:45 GMT+02:00 Dean Michael Berris
On Tue Sep 09 2014 at 2:20:24 AM Andrzej Krzemienski
wrote: I went to see how Boost.Variant addresses this problem. Interestingly, it doesn't.
#include
struct Wrapper { operator int () { return 9; } operator boost::variant
() { return 7; } }; int main() { boost::variant
v = Wrapper(); assert(boost::get<int>(v) == 7); } This program assertion-fails on MSVC.
Okay, that's interesting.
What's the process here, do we file a bug to Microsoft? Send in a defect report to the committee? Do we know the clauses in the standard that's supposed to make this "do the right thing"?
I filed this bug report: https://connect.microsoft.com/VisualStudio/feedbackdetail/view/967397/incorr... I suppose MSVC 10.0 is no longer supported, but the same bug is present in all the newer versions of the compiler as well. The standard is clear about how the initialization should behave here, so the bug belongs to MSVC. It so obvious that I do not think that any reference to the standard is necessary. If the developers need it, I will provide it. Regards, &rzej