Commit Graph

53 Commits

Author SHA1 Message Date
24d29e5865 Fix for clang, when adapted type is convertible from other types.
The problem was with copy/move constructors of boost::optional<T>, which invoked
optional_base<T> constructors with a single argument. Since optional_base has
copy/move constructors along with initializing constructors taking a single
argument, the latter may be considered by the compiler for viability. While
doing so, the compiler may instantiate the template constructor of T with
an argument of optional_base<T>, which in turn may fail if the constructor
attempts to inspect the type of its argument (e.g. to constrain the set of
acceptable types). Specifically, this happens with clang in C++03 mode,
when boost::multiprecision::number is wrapped in boost::optional and
a copy constructor of boost::optional is invoked.

This commit fixes the problem by destinguishing copy/move constructors of
optional_base from initializing constructors with an additional tag argument.
2018-11-04 17:35:10 +03:00
bebc606a4c Remove deprecation mark from reset()
The `std::optional` has `reset()` [optional.mod] and it is not deprecated.
2018-10-23 22:34:10 +02:00
350ebab88a Workaround GCC 8-9 regression
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87531
2018-10-05 18:47:16 +03:00
c52280bb78 Remove dependency on MPL 2018-09-12 20:02:47 +03:00
71d797b9ee added implementation and tests of flat_map() 2018-06-28 23:30:47 +02:00
701afd43a4 fixed strange verisons of libstdc++ 2018-06-28 21:17:07 +02:00
d13623884a hopefully fixed the libstdc++ 4.9 problem (thanks Jonathan) 2018-06-28 02:10:57 +02:00
0169460194 fixed tests and maybe std::is_trivially_default_constructible 2018-06-25 22:50:00 +02:00
e47a017009 added o.map() 2018-06-23 18:27:14 +02:00
5182f7f30f Added has_value() 2018-03-24 00:04:15 +01:00
76ff82d191 Silenced warning -Wzero-as-null-pointer-constant 2018-02-15 22:51:08 +01:00
a5aaf4d8d0 Fixed recurring typo 2018-02-11 21:03:54 +01:00
fb54ee1741 Fixed spelling mistake in macros 2017-11-07 23:35:01 +01:00
7541076cf1 fixed defaulted moves on older compilers 2017-11-07 23:34:41 +01:00
40f7c97292 Fixed -Wmaybe-uninitialized 2017-11-07 23:34:37 +01:00
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
6e10173a44 Fixed silly && bug 2017-11-07 23:34:28 +01:00
69bf75ae6d Fix trivially-constructible bug with deleted functions 2017-11-07 23:34:26 +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
7e1beb473c Use BOOST_MAY_ALIAS from Boost.Config. 2017-11-07 23:33:59 +01:00
17826eae3b more old compiler workarounds 2016-11-24 23:20:25 +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
9f8823aebf Fixed #24 2016-09-27 09:51:09 +03:00
99efe72052 is_const_interal -> is_const_integral 2016-09-06 21:59:54 +02:00
f9324a8790 attempt fix at gcc 5.2 c++03 2016-09-02 01:42:26 +02:00
088e2e3051 Suppress a 'unused parameter' warning in optional_reference_spec.hpp 2016-05-31 01:00:20 +02:00
08076e3964 fixed optional<optional<T>&> case 2016-05-17 00:54:09 +02:00
865d94a8d8 fixed interop between opt refs and opt vals 2016-03-06 19:08:25 +01:00
9118518516 more extensive speculative fix 2016-02-20 16:36:48 +01:00
44d57a1d8b Fix: prevented the binding illegal temporary to optional<const int&>
Older MSVC versions add illegal temporary when you want to assign from const integral value.
2016-02-19 00:25:54 +01:00
c653372524 cleanup after separating references 2016-02-18 00:24:59 +01:00
94c735af2d added optional ref swap
and also chaned the copyright year in docs
2016-02-13 15:33:07 +01:00
b5b8414c06 Primary template optional<> does not handle references 2016-02-13 00:46:41 +01:00
0a228e74fe Config: NO_PROPER_CONVERT in older GCC 2015-10-24 22:45:00 +02:00
4b3077dea3 config: if for intel 2015-10-20 23:42:03 +02:00
7396e4051b config: fixed bad name 2015-10-20 16:02:04 +02:00
b96337a6d7 no intel detection 2015-10-20 09:21:02 +02:00
74bd6444db config: excluding intel 2015-10-19 10:21:54 +02:00
472a94d371 CFG: handling C++03 compilers 2015-10-15 08:48:34 +02:00
fb1cf2581e Config: detect ref convert bug in gcc 4.4 and 4.5 2015-10-14 23:11:33 +02:00
29975d6192 Config: improved NO_PROPER_CONVERT 2015-10-13 10:47:26 +02:00
6375fccf27 NO_PROPER_CONVERT_FROM_CONST_INT macro 2015-10-10 15:23:38 +02:00
0d5061aebe experimental optional config test 2015-10-08 18:54:21 +02:00
bc91cac244 Add newline at EOF 2015-10-07 09:02:13 +02:00
fb1edf51e8 value_or_eval fix 2015-10-06 12:39:02 +02:00
4939613070 added missing ifdef 2015-10-06 09:17:14 +02:00