Commit Graph

1126 Commits

Author SHA1 Message Date
Peter Dimov
ea81279b35 Add appveyor.yml 2017-12-20 23:14:36 +02:00
Peter Dimov
7d101d420c Replace mpl primitives with type_traits 2017-12-20 21:55:07 +02:00
Peter Dimov
d8acfef27b Update includes in utility.hpp; add deprecation comment 2017-12-02 04:35:22 +02:00
Peter Dimov
d7ae336915 Merge branch 'master' into develop 2017-12-02 03:47:03 +02:00
Peter Dimov
b74f49f1e5 Remove dependency on iterator in <boost/utility.hpp> 2017-12-02 03:38:29 +02:00
Daniel Frey
5977f11be8
Merge pull request #36 from boostorg/develop
Protect dereferenceable<> against overloaded operator&, fixes #35
2017-12-01 20:59:24 +01:00
Daniel Frey
ad0fc7c9d3
Protect dereferenceable<> against overloaded operator&, fixes #35 2017-11-23 21:14:07 +01:00
Peter Dimov
a6c175e2c3 clang 3.5 can't handle libstdc++-5 2017-10-28 14:11:41 +03:00
Peter Dimov
874ca2307b Update clangs to libstdc++-5-dev for constexpr std::min 2017-10-28 04:49:50 +03:00
Peter Dimov
5220260145 Update .travis.yml 2017-10-27 15:31:19 +03:00
Daniel Frey
2f5a6fbcf1 Adapt to C++17, fixes #34 2017-10-15 10:34:04 +02:00
Peter Dimov
51ba9f1b45 Add one more case to value_init_workaround_test 2017-09-24 12:47:05 +03:00
Andrey Semashev
5cef1403b0 Merge pull request #33 from morinmorin/fix_no_expr_sfinae
result_of<F&(…)> fails on MSVC-12 if F is a function pointer
2017-09-23 21:59:06 +03:00
morinmorin
81ce4693f6 Add tests for result_of<F&(...)> in C++11. 2017-09-20 23:44:35 +09:00
morinmorin
fb2f110eb4 Fix result_of_is_callable to support references to function pointers.
On compilers without the support of expression SFINAE, decltype-based
result_of<FP&(...)> failed to compile (FP is a function pointer type).
2017-09-20 23:40:56 +09:00
Andrey Semashev
2ed5ee9588 Moved numeric_traits_test.cpp to Boost.Detail. 2017-09-20 01:42:15 +03:00
Andrey Semashev
88c36c1941 Remove generator iterator test and docs as these were moved to Boost.Iterator. 2017-08-28 20:41:11 +03:00
Andrey Semashev
0b2409a942 Updated links to next/prior docs. 2017-08-26 20:07:12 +03:00
Andrey Semashev
62b39548be Moved next/prior to Boost.Iterator. 2017-08-26 17:25:14 +03:00
Andrey Semashev
2722fdcda3 Use std::iterator_traits to detect iterators, when possible.
This allows next/prior to detect user's iterators that do not
define iterator_category nested type but specialize
std::iterator_traits instead.
2017-07-23 20:29:25 +03:00
Andrey Semashev
792d0538d2 Merge branch 'develop' 2017-07-17 20:47:57 +03:00
Andrey Semashev
06ae661775 Merge pull request #31 from Lastique/next_prior_use_traversal
Use Boost.Iterator to advance iterators.
2017-07-13 21:04:18 +03:00
Andrey Semashev
d9d076874e Merge branch 'develop' 2017-07-13 20:59:28 +03:00
Andrey Semashev
e25d85446e Use Boost.Iterator to advance iterators.
By using Boost.Iterator we rely on the separate traversal category instead of
the standard iterator category to advance iterators efficiently. For instance,
this allows to advance transform iterators over a random access sequence
in constant time, despite that they are formally input iterators.

Also, std::reverse_iterator formally requires at least bidirectional iterator
as the underlying iterator type. Transform iterators from the example above
don't qualify, so potentially std::reverse_iterator could fail to compile.
2017-07-12 21:15:20 +03:00
Andrey Semashev
5bc9e47688 Changed iterator_category nested type detection to work with MSVC and different versions of gcc. 2017-07-12 20:14:48 +03:00
Andrey Semashev
ec50f22b8b Merge pull request #30 from Lastique/fix_next_prior_for_iterators
Fix next/prior for iterators
2017-07-09 13:41:03 +03:00
Brian Minard
592382dc61 Add test cases for std::reverse_iterator 2017-07-09 03:10:10 +03:00
Andrey Semashev
6cf9c22cf1 Reworked iterator handling in next/prior helpers.
The new implementation tries to detect if the incremented/decremented type
is an iterator first and if not falls back to operator probing. This way
iterators that are not SFINAE-friendly (i.e. unconditionally define
arithmetic operators regardless of the iterator category) are still treated
as iterators through std::advance and do not fail the compilation.

The iterator detection is based on probing for the nested iterator_category
type that is expected to be present in class-type iterators. This heuristic
is not flawless since iterators are not required to defined this type.
User-defined iterators may not have it and instead specialize
std::iterator_traits. This use case is not covered by the current implementation
and will likely fail to compile. With C++17 SFINAE-friendly std::iterator_traits
this can be fixed, but currently Boost.Config lacks the macro to detect
availability of this feature. Support for it can be added by a later commit.

Also simplified boost::prior for iterators, removing the possibility of
integer overflow caused by negation of the distance value.
2017-07-09 03:10:01 +03:00
Peter Dimov
33475f87e4 Merge branch 'develop' 2017-05-30 15:08:09 +03:00
Peter Dimov
21261a8630 Add visible dependency to result_of_iterate.hpp 2017-05-30 01:20:02 +03:00
Peter Dimov
7d60e8e378 Merge branch 'develop' 2017-05-30 00:56:41 +03:00
Peter Dimov
10ff4d4fcd Try to upgrade libstdc++ for clang in 14/1z mode 2017-05-29 21:27:57 +03:00
Peter Dimov
89bf74beee Add .travis.yml 2017-05-29 19:16:28 +03:00
Peter Dimov
bfdcce0f97 Move test files to test/ 2017-05-29 19:10:46 +03:00
Marshall Clow
330b49d602 Mark comparison operators for string_view as constexpr; add tests. Reference: https://svn.boost.org/trac/boost/ticket/12896 2017-05-03 19:58:02 -07:00
Marshall Clow
68b26cddbe Merge branch 'develop' of github.com:boostorg/utility into develop 2017-04-06 07:59:12 -07:00
Marshall Clow
6c4ab93573 Revert change disallowing construction of string_view/string_ref from rvalue string 2017-03-28 15:17:09 +02:00
Marshall Clow
0876da45db Fix potential overflow in substr; Trac #11536. Also change string_view::copy to use the traits::copy 2017-02-13 10:49:17 -08:00
Marshall Clow
00f02167e3 Add tests to ensure that string_view|ref from rvalue fails (whenever it can) 2017-02-13 10:25:04 -08:00
Marshall Clow
9960d9f395 Don't construct string_view|string_ref from rvalue string. That way lies pain 2017-02-13 08:15:44 -08:00
Andrey Semashev
ccfd741c0a Merge pull request #27 from MarcelRaad/patch-1
Use non-deprecated include paths
2016-12-21 12:20:20 +04:00
Marcel Raad
c5c479d49c Use non-deprecated include paths
According to the comments in these two headers, the files in the core directory should be used instead.
2016-12-21 08:22:35 +01:00
Marshall Clow
3e8f73c6ac Merge pull request #26 from Surrog/develop
Fixing visual studio compilation of string_view::at(); preserving C++11 constexpr-ness.
2016-12-12 17:22:29 -08:00
Surogate
38121f2af3 Allow string_view::at() to be constexpr again on VS2015
VS2015 doesn't support extended constexpr. Thanks to Lastique for the
ternary trick
2016-12-12 23:45:34 +01:00
Surogate
38b536ff05 Fixing visual studio compilation of string_view::at()
VS2013, VS2015 & VS2017RC don't like the ternary throwing an exception :
'return': cannot convert from 'void' to 'const char &'
Now using classic if when compiling on a windows platform.
2016-12-12 22:57:56 +01:00
Marshall Clow
9ae6492af9 Merge pull request #25 from zerotypos-found/inspection_report
Remove tabs and Non-ASCII characters.  Thanks!
2016-11-21 18:25:08 -08:00
zerotypos-found
816607e212 Remove tabs and Non-ASCII characters. 2016-11-15 11:59:51 +09:00
Andrey Semashev
a3ab942bc2 Merge branch 'develop' 2016-11-08 16:56:27 +03:00
Andrey Semashev
0f1f793caf Removed std::binary_function from a comment. 2016-11-06 21:18:27 +03:00
Peter Dimov
ff445c0ece Remove std::binary_function use, it has been removed in C++17 2016-11-06 14:38:13 +02:00