mirror of
https://github.com/boostorg/algorithm.git
synced 2025-07-29 12:07:18 +02:00
Updated constexpr tests for all affected modules. Added conditional constexpr to equal, which uses std::distance.
This commit is contained in:
@ -15,6 +15,13 @@
|
||||
#include <algorithm> // for std::equal
|
||||
#include <functional> // for std::equal_to
|
||||
|
||||
#ifdef __cpp_lib_array_constexpr // or cpp17 compiler
|
||||
// if compiled according to C++17 standard or std functions are constexpr
|
||||
#define BOOST_CONSTEXPR_IF_STD_CONSTEXPR constexpr
|
||||
#else
|
||||
#define BOOST_CONSTEXPR_IF_STD_CONSTEXPR
|
||||
#endif
|
||||
|
||||
namespace boost { namespace algorithm {
|
||||
|
||||
namespace detail {
|
||||
@ -25,6 +32,7 @@ namespace detail {
|
||||
};
|
||||
|
||||
template <class RandomAccessIterator1, class RandomAccessIterator2, class BinaryPredicate>
|
||||
BOOST_CONSTEXPR_IF_STD_CONSTEXPR
|
||||
bool equal ( RandomAccessIterator1 first1, RandomAccessIterator1 last1,
|
||||
RandomAccessIterator2 first2, RandomAccessIterator2 last2, BinaryPredicate pred,
|
||||
std::random_access_iterator_tag, std::random_access_iterator_tag )
|
||||
@ -37,7 +45,8 @@ namespace detail {
|
||||
}
|
||||
|
||||
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
||||
BOOST_CXX14_CONSTEXPR bool equal ( InputIterator1 first1, InputIterator1 last1,
|
||||
BOOST_CXX14_CONSTEXPR
|
||||
bool equal ( InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred,
|
||||
std::input_iterator_tag, std::input_iterator_tag )
|
||||
{
|
||||
@ -60,6 +69,7 @@ namespace detail {
|
||||
/// \param last2 One past the end of the second range.
|
||||
/// \param pred A predicate for comparing the elements of the ranges
|
||||
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
||||
BOOST_CXX14_CONSTEXPR
|
||||
bool equal ( InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred )
|
||||
{
|
||||
@ -78,6 +88,7 @@ bool equal ( InputIterator1 first1, InputIterator1 last1,
|
||||
/// \param first2 The start of the second range.
|
||||
/// \param last2 One past the end of the second range.
|
||||
template <class InputIterator1, class InputIterator2>
|
||||
BOOST_CXX14_CONSTEXPR
|
||||
bool equal ( InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2 )
|
||||
{
|
||||
|
Reference in New Issue
Block a user