Commit Graph

191 Commits

Author SHA1 Message Date
Andrzej Krzemienski
c0084a0451 extended speculative fix to more MSVC compilers 2016-02-20 16:11:16 +01:00
Andrzej Krzemienski
3b58b0f4da speculative fix for msvc 8.0 test failure 2016-02-20 11:34:18 +01:00
Andrzej Krzemienski
f6e09fbf9c value constructor is sfinae-friendly 2016-02-19 18:41:42 +01:00
Andrzej Krzemienski
5ffa3fd2f6 turned a complicatedcondition in enable_if into a metafun 2016-02-19 01:51:08 +01:00
Andrzej Krzemienski
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
Andrzej Krzemieński
1671966380 fixed preprocessor typeo 2016-02-18 15:02:07 +01:00
Andrzej Krzemieński
b38b64cee9 extended destructor workaround to MSVC 10.0 2016-02-18 12:34:08 +01:00
Andrzej Krzemieński
7ae2db7312 Conditionally removing optional destructor 2016-02-18 11:00:24 +01:00
Andrzej Krzemieński
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
Andrzej Krzemienski
c653372524 cleanup after separating references 2016-02-18 00:24:59 +01:00
Andrzej Krzemienski
87ef503606 Removed empty optional destructor 2016-02-17 16:39:07 +01:00
Andrzej Krzemienski
94c735af2d added optional ref swap
and also chaned the copyright year in docs
2016-02-13 15:33:07 +01:00
Andrzej Krzemienski
b5b8414c06 Primary template optional<> does not handle references 2016-02-13 00:46:41 +01:00
Andrzej Krzemieński
0a228e74fe Config: NO_PROPER_CONVERT in older GCC 2015-10-24 22:45:00 +02:00
Andrzej Krzemieński
4b3077dea3 config: if for intel 2015-10-20 23:42:03 +02:00
Andrzej Krzemieński
7396e4051b config: fixed bad name 2015-10-20 16:02:04 +02:00
Andrzej Krzemieński
b96337a6d7 no intel detection 2015-10-20 09:21:02 +02:00
Andrzej Krzemieński
74bd6444db config: excluding intel 2015-10-19 10:21:54 +02:00
Andrzej Krzemieński
472a94d371 CFG: handling C++03 compilers 2015-10-15 08:48:34 +02:00
Andrzej Krzemienski
fb1cf2581e Config: detect ref convert bug in gcc 4.4 and 4.5 2015-10-14 23:11:33 +02:00
Andrzej Krzemieński
29975d6192 Config: improved NO_PROPER_CONVERT 2015-10-13 10:47:26 +02:00
Andrzej Krzemieński
6375fccf27 NO_PROPER_CONVERT_FROM_CONST_INT macro 2015-10-10 15:23:38 +02:00
Andrzej Krzemienski
0d5061aebe experimental optional config test 2015-10-08 18:54:21 +02:00
Jürgen Hunold
bc91cac244 Add newline at EOF 2015-10-07 09:02:13 +02:00
Andrzej Krzemieński
fb1edf51e8 value_or_eval fix 2015-10-06 12:39:02 +02:00
Andrzej Krzemieński
4939613070 added missing ifdef 2015-10-06 09:17:14 +02:00
Andrzej Krzemienski
b0d7786e14 bug fixes 2015-10-06 00:33:14 +02:00
Andrzej Krzemienski
e7cab0e233 fixed digraphs in optional refs 2015-10-05 23:50:11 +02:00
Andrzej Krzemienski
cf4b2e8b16 specialization for optional ref - preliminary 2015-10-05 16:54:05 +02:00
Andrzej Krzemienski
9f8dd57386 boost::none - simpler and works with MSVC 2015-10-02 09:00:57 +02:00
Andrzej Krzemienski
b43ce289c2 Fixed no-return warning 2015-06-03 18:22:41 +02:00
Andrzej Krzemienski
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
Andrzej Krzemienski
8ca74951b0 Added emplace(void) for older compilers 2015-05-15 18:10:19 +02:00
drivehappy
1d7fe0e770 Removed unused parameters. 2015-04-21 14:37:41 -07:00
Andrzej Krzemienski
15d9fcdbd1 added missing overload for value_or fo non-C++11 compilers 2015-03-10 07:14:36 +01:00
Andrzej Krzemienski
6e40825098 described headers in docs; added move in operator>> 2015-03-09 21:56:25 +01:00
Andrzej Krzemienski
0a8a798c3a Fixed Trac #10839 2015-03-09 11:50:10 +01:00
Andrzej Krzemienski
59266a2630 More restrictive assignment from optional<U> 2015-03-06 19:20:45 +01:00
Andrzej Krzemienski
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
Andrzej Krzemienski
726b227aa9 operator<< improvements 2015-01-21 00:10:51 +01:00
Andrzej Krzemienski
0d06d66f5c Improvement to "cout << none" implementation 2014-11-24 22:53:59 +01:00
Jürgen Hunold
1d3446304b Add operator<< for boost::none 2014-11-24 15:38:24 +01:00
Andrzej Krzemienski
53e53171c4 none_t is no loner constructible from literal 0
This caused problems because:
optional<T> o = 0;
always worked. But often it would create an uninitialized optional.
2014-11-22 01:18:25 +01:00
Kazutoshi SATODA
d4a4cdca1d Supply <string> to fix C++03 compile error on logic_error("...")
This change makes the library usable (again) on C++03 standard library
implementations where <stdexcept> doesn't imply inclusion of <string>,
e.g. STLport.
2014-08-28 02:45:14 +09:00
Andrzej Krzemienski
fea4882f24 rvalue ref overloads do not return by value 2014-07-10 13:49:36 +02:00
Andrzej Krzemienski
18b8c4bb18 Catching up with N4078 2014-06-28 00:31:36 +02:00
Andrzej Krzemienski
4cbb67e505 Cleaner handling of explicit U to T conversions 2014-06-20 11:38:57 +02:00
Andrzej Krzemienski
d70114b3dc Added func value_or_eval() 2014-06-18 16:42:48 +02:00
Andrzej Krzemienski
0a2a8957fa bug fix: comma in BOOST_STATIC_ASSERT 2014-06-15 21:51:07 +02:00
Andrzej Krzemienski
31c9119266 value_or() requires that U is convertible to T
Due to Vladimir Batov.
2014-06-14 22:49:37 +02:00
Andrzej Krzemienski
8fc2901fad explicit operator bool becomes noexcept 2014-06-14 00:46:24 +02:00
Andrzej Krzemienski
fdc98d17ca Added limited emplace() for older compilers 2014-06-06 23:24:43 +02:00
Andrzej Krzemienski
3dd614fd91 Reorganized docs. Minor code fix wrt opt refs 2014-06-04 18:13:06 +02:00
Andrzej Krzemienski
f99618f09b Added ref-qualifiers to some accessors 2014-06-03 23:07:19 +02:00
Andrzej Krzemienski
2e583aaf30 Fixed code, updated docs, added emplace() 2014-06-03 17:36:18 +02:00
Andrzej Krzemienski
3984c9f9a1 Added function value_or() 2014-05-23 16:38:42 +02:00
Andrzej Krzemienski
75271b73a8 Member fun value() that throws on uninitialized 2014-05-22 23:32:49 +02:00
Andrey Semashev
5e59e10f93 Fix warnings with gcc 4.4 in C++11 mode
GCC 4.4 has support for an early draft of rvalue references. When compiling the conforming code it produces warnings such as '../boost/optional/optional.hpp:152: warning: returning reference to temporary'. In order to fix this regression use a special implementation of move(), similar to std::move() on this compiler.
2014-05-22 10:15:11 +04:00
Andrzej Krzemienski
e9f5ed41be binding to rvalues can be reenabled with a macro 2014-05-13 14:11:17 +02:00
Andrzej Krzemienski
f94846ccc5 Improved documentation. Added some noexcept. 2014-05-07 17:07:12 +02:00
Andrzej Krzemienski
6a790e0c97 Added a test that tests the compiler if references are bound correctly. Also added the second copyright notice. 2014-05-05 19:08:11 +02:00
Andrzej Krzemienski
86e759fb89 optional<const T&>::rval_reference_type is now T&& (not const T&) 2014-05-02 18:41:23 +02:00
Andrzej Krzemienski
897fdad11b Changed incorrect types in static assertions guarding against binding temporaries to optional refs 2014-05-02 15:41:43 +02:00
Andrzej Krzemienski
c51f3e810b The (in)equality comparison with boost::none does not require that T be EqualityComparable 2014-04-29 22:59:06 +02:00
Andrzej Krzemienski
d59f47156f Merge branch 'feature/move-semantics' into develop
Conflicts:
	doc/html/index.html
	include/boost/optional/optional.hpp
	test/Jamfile.v2
2014-04-29 01:24:10 +02:00
Andrzej Krzemienski
c9f1422560 Updated documentation; fixed optional::swap 2014-04-29 01:06:14 +02:00
Andrzej Krzemienski
01b22a0ff0 Added tests for move conversion between optional<T> and optional<U> 2014-04-28 16:51:49 +02:00
Andrzej Krzemienski
3816143646 Disabled assignment and construction from rvalue references in optional<const T&> 2014-04-28 15:48:55 +02:00
Andrzej Krzemienski
0e61751fab Added more tests for move operations, fixed bugs, disabled optional<T&&>. 2014-04-26 23:24:21 +02:00
Marcel Raad
c7cf80e5df Use BOOST_EXPLICIT_OPERATOR_BOOL for optional
I often have the problem that when I change a std::wstring to boost::optional<std::wstring> and the variable is used as a parameter with Boost.Format, the result silently changes from the string contents to "1".

This change prevents implicit conversion to bool if the compiler supports explicit conversion operators.
2014-04-26 15:26:37 +02:00
Andrzej Krzemienski
5c69bac12f Fixed unit tests (still need to add more unit tests for move semantics) 2014-04-26 00:22:39 +02:00
Andrzej Krzemienski
a26d11be87 Partially added move semantics (tests are still failing) 2014-04-22 22:36:19 +02:00
Andrzej Krzemienski
587ef8e988 Added 'raw' move semantics; no unit-tests 2014-04-14 23:44:34 +02:00
Stephen Kelly
3cf0363668 Optional: Remove obsolete GCC version checks.
[SVN r86068]
2013-09-30 15:58:48 +00:00
Stephen Kelly
c9ead30713 Remove use of obsolete BOOST_NO_TEMPLATED_STREAMS macro.
It was only defined for no-longer-supported-gcc.

[SVN r86062]
2013-09-30 15:56:52 +00:00
Stephen Kelly
931cf3941b Optional: Remove obsolete MSVC version checks.
[SVN r86019]
2013-09-30 00:17:11 +00:00
Steven Watanabe
655eb739fa Add a forward declaration of the ostream operator for optional. Fixes #2103.
[SVN r82930]
2013-02-16 19:32:20 +00:00
Steven Watanabe
e8853f23cd Use __may_alias__ instead of may_alias. Fixes #6410.
[SVN r82919]
2013-02-16 02:48:46 +00:00
Steven Watanabe
ff48f2b3a0 Work around msvc bug when explicitly destroying a class with a virtual base. Fixes #5940.
[SVN r82915]
2013-02-15 19:22:34 +00:00
Vicente J. Botet Escriba
f6db3d6bc3 Optional: fix some unused parameter warnings
[SVN r81031]
2012-10-21 06:30:04 +00:00
Andrey Semashev
e9989b260e Refs #4987. Added forward declaration of namespace-scope swap for boost::optional, this should fix GCC compilation errors. Also swap implementation now uses Boost.Utility.Swap to make use of the workarounds for some broken compilers. If it breaks for your compiler, let me know in the mentioned ticket.
[SVN r67288]
2010-12-17 21:12:56 +00:00
Andrey Semashev
646488e0e2 operator>> behavior changed slightly so that the stream is not accessed when unrecognized character sequence is detected.
[SVN r67184]
2010-12-12 11:35:19 +00:00
Andrey Semashev
64d8062621 The may_alias workaround is also disabled for GCC prior to 3.2. Also added description for this workaround.
[SVN r67112]
2010-12-08 18:32:36 +00:00
Ralf W. Grosse-Kunstleve
d39627c5b6 boost/optional/optional.hpp: avoid gcc 3.2 warnings
[SVN r67109]
2010-12-08 17:53:29 +00:00
Andrey Semashev
f88c8ae423 Refs #3395. Optional construction and assignment now works correctly for types with overridden operator&. Also silenced some GCC warnings about broken strict aliasing rules.
[SVN r67020]
2010-12-05 14:43:18 +00:00
Sebastian Redl
ab01dfff7e Fully qualify ios flags. Fixes compilation of PropertyTree, bug 4459.
[SVN r64342]
2010-07-25 22:21:45 +00:00
Fernando Cacciola
8608ad1497 Fixed behaviour in case of invalid input
[SVN r64208]
2010-07-20 19:21:44 +00:00
Fernando Cacciola
c93e5a88c7 Fixed extraction operator for empty optionals
[SVN r64206]
2010-07-20 18:20:40 +00:00
Daniel James
97e314f03a Fix some header links.
[SVN r64006]
2010-07-14 08:15:33 +00:00
Douglas Gregor
16f0a0aaaf Expose the "types" typedef of boost::optional_detail::operator_base as
public, rather than protected, since Spirit pokes at this typedef. 


[SVN r61832]
2010-05-06 21:44:18 +00:00
Gennadiy Rozental
8682f2bbaa avoid C style casts
[SVN r53671]
2009-06-06 09:42:41 +00:00
Niels Dekker
43eac5bb12 Added forward declaration of boost::optional_swap_should_use_default_constructor.
[SVN r45264]
2008-05-10 14:42:49 +00:00
Niels Dekker
74674531c8 Replaced "using std::swap" by "using boost::swap" within optional::swap member function, hoping to fix GCC test failures, as mentioned at http://article.gmane.org/gmane.comp.lib.boost.devel/174350 "Re: [optional] problems with swap()"
[SVN r44826]
2008-04-27 21:09:50 +00:00
Niels Dekker
a4572497be Added forward declaration of optional<T>'s boost::swap overload, as mentioned at http://article.gmane.org/gmane.comp.lib.boost.devel/174350 "Re: [optional] problems with swap()"
[SVN r44825]
2008-04-27 21:07:10 +00:00
Niels Dekker
66c366d18a Improved swap for optional<T>, co-written by Thorsten and Fernando: added support for tweaking whether swap should use T's default constructor. Added swap member function. Discussed at Boost developers' mailing list, "[optional] problems with swap()", http://lists.boost.org/Archives/boost/2008/04/135882.php
[SVN r44766]
2008-04-25 16:50:32 +00:00
Fernando Cacciola
95c864e119 Cast to base added to avoid a call to the convertir constructor/assignment (see Tickes 1419 and 1420)
[SVN r41381]
2007-11-25 20:26:14 +00:00
Beman Dawes
9afdbe65e7 // Add or correct comment identifying Boost library this header is associated with.
[SVN r41173]
2007-11-17 20:13:16 +00:00
Fernando Cacciola
3499d477dc Merged changests from RC_1_34_0 - base rev 33417
[SVN r40705]
2007-11-02 22:56:23 +00:00
Gennaro Prota
16a8ccbecc removed unnamed namespace (see http://lists.boost.org/Archives/boost/2006/07/107873.php); usual copyright/license/url fixes
[SVN r34646]
2006-07-20 23:17:22 +00:00
Fernando Cacciola
734e5b5283 Some additional functions added to optional (being new there won't be regressions)
[SVN r34411]
2006-06-26 18:01:38 +00:00