
2015-01-21 22:14 GMT+01:00 Andrey Semashev
On Thu, Jan 22, 2015 at 12:10 AM, Andrzej Krzemienski
wrote: 2015-01-21 21:56 GMT+01:00 Peter Dimov
: An optional
that fails silently for certain T's in a quite insidious way on a wide array of popular compilers, including all versions of MSVC,
should perhaps be disabled for those T's outright, instead of the failures being marked. Users do not consult the markup when using optional<> and even if they did, optional
is most likely to occur in generic code, not on its own. This will result in some very hard to track bugs. Are you saying that on a compiler where an operation on optional
might give wrong run-time result, the operation should be disabled (render a compile-time error)? If so, I agree, and intend to do it at some point. But even then I should indicate somehow in regression tests that I expect different results in gcc and in msvc. What kind of errors are we talking about? Does optional
behave plain wrong on MSVC or is there a misbehavior in some narrow case? Does it compile invalid code, does it not compile valid one, or is there a miscompilation?
In most of the cases the program compiles but we have a run-time misbehavior: we store a reference to an unexpected temporary rather than to the original object.