Commit Graph

99 Commits

Author SHA1 Message Date
06dea2cb9b Reverted specialization for trivial types
It caused too many problems. I left only specialiation for scalar types.
I will need to devise clever type traits for reconizing trivial types with working constructor.
2017-11-07 23:34:34 +01:00
69bf75ae6d Fix trivially-constructible bug with deleted functions 2017-11-07 23:34:26 +01:00
9d0ddc4709 fixed regression on compilers w/o type trait support 2017-11-07 23:34:18 +01:00
a7f33f5d6f more defensive checking for trivial types -- avoiding bugs 2017-11-07 23:34:15 +01:00
58f7c2f14a fix bug with defaulted move in msvc 12.0 2017-11-07 23:34:12 +01:00
2d2c3c3f6f trivially-copyable optional<T> for trivial T 2017-11-07 23:34:05 +01:00
e95f9fc254 Convert tabs to spaces. 2017-11-07 23:34:02 +01:00
4fe57f57fa Fix make_optional for rvalues 2017-11-07 23:33:54 +01:00
c695be11b5 Adds forwarding make_optional helpers, resolves #30 2017-11-07 23:32:27 +01:00
d73b5110dd corrected the compiler workarounds 2016-11-22 02:35:24 +01:00
b4907c2a51 old compiler workarounds for the previous two fixes 2016-11-20 23:42:41 +01:00
fafb3abb64 Implemented reset syntax: o = {} 2016-11-19 21:14:28 +01:00
7ea2ca6c40 Fix #12563 2016-11-19 14:57:40 +01:00
8d69e99e78 removed hack test, updated copyright 2016-11-06 01:49:53 +01:00
9bc1cc585c small sfinae fix for in_place constructors 2016-11-02 22:28:20 +01:00
4e08f0dd41 Fixed build in C++03 compiler 2016-10-28 11:49:33 +02:00
9af24038bc fixed initialization of in_place tags 2016-10-27 11:40:23 +02:00
92d40c7108 Fixed in_place_init tags 2016-10-27 09:21:24 +02:00
eb9ea1f72d added in_place constructors 2016-10-27 01:08:17 +02:00
0831788c86 Removed enable_if factory on SUNPRO compilers 2016-03-05 23:22:29 +01:00
9118518516 more extensive speculative fix 2016-02-20 16:36:48 +01:00
c0084a0451 extended speculative fix to more MSVC compilers 2016-02-20 16:11:16 +01:00
3b58b0f4da speculative fix for msvc 8.0 test failure 2016-02-20 11:34:18 +01:00
f6e09fbf9c value constructor is sfinae-friendly 2016-02-19 18:41:42 +01:00
5ffa3fd2f6 turned a complicatedcondition in enable_if into a metafun 2016-02-19 01:51:08 +01:00
1671966380 fixed preprocessor typeo 2016-02-18 15:02:07 +01:00
b38b64cee9 extended destructor workaround to MSVC 10.0 2016-02-18 12:34:08 +01:00
7ae2db7312 Conditionally removing optional destructor 2016-02-18 11:00:24 +01:00
630fbb7973 re-added explicit optional destructor
If it is not there T::~T() is never called in buggy msvc-8.0.
2016-02-18 09:16:59 +01:00
c653372524 cleanup after separating references 2016-02-18 00:24:59 +01:00
87ef503606 Removed empty optional destructor 2016-02-17 16:39:07 +01:00
b5b8414c06 Primary template optional<> does not handle references 2016-02-13 00:46:41 +01:00
cf4b2e8b16 specialization for optional ref - preliminary 2015-10-05 16:54:05 +02:00
b43ce289c2 Fixed no-return warning 2015-06-03 18:22:41 +02:00
4e7405a233 Sane swap() for rvalue-aware compilers
When we detect that compiler supports rvalue references, we implement swap() in term of moves (as intuition suggests).
Otherwise we fall back to old tricks with default constructor+swap
2015-05-18 16:51:12 +02:00
8ca74951b0 Added emplace(void) for older compilers 2015-05-15 18:10:19 +02:00
1d7fe0e770 Removed unused parameters. 2015-04-21 14:37:41 -07:00
15d9fcdbd1 added missing overload for value_or fo non-C++11 compilers 2015-03-10 07:14:36 +01:00
0a8a798c3a Fixed Trac #10839 2015-03-09 11:50:10 +01:00
59266a2630 More restrictive assignment from optional<U> 2015-03-06 19:20:45 +01:00
f229257f30 You can now manually disable move semantics.
This may be useful in MSVC to work around a bug described in Trac #10399
2015-01-21 15:03:17 +01:00
726b227aa9 operator<< improvements 2015-01-21 00:10:51 +01:00
fea4882f24 rvalue ref overloads do not return by value 2014-07-10 13:49:36 +02:00
18b8c4bb18 Catching up with N4078 2014-06-28 00:31:36 +02:00
4cbb67e505 Cleaner handling of explicit U to T conversions 2014-06-20 11:38:57 +02:00
d70114b3dc Added func value_or_eval() 2014-06-18 16:42:48 +02:00
0a2a8957fa bug fix: comma in BOOST_STATIC_ASSERT 2014-06-15 21:51:07 +02:00
31c9119266 value_or() requires that U is convertible to T
Due to Vladimir Batov.
2014-06-14 22:49:37 +02:00
8fc2901fad explicit operator bool becomes noexcept 2014-06-14 00:46:24 +02:00
fdc98d17ca Added limited emplace() for older compilers 2014-06-06 23:24:43 +02:00