Commit ecabb39c authored by Mark de Wever's avatar Mark de Wever
Browse files

Revert "[libc++] P1645 constexpr for <numeric>"

This reverts commit eb9b0635.

The commit fails to build on build bots using LLVM 8.
parent ed242da0
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -196,8 +196,6 @@ Status
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_misc``                      *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_numeric``                   ``201911L``
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_swap_algorithms``           *unimplemented*
    ------------------------------------------------- -----------------
    ``__cpp_lib_constexpr_utility``                   ``201811L``
+46 −56
Original line number Diff line number Diff line
@@ -17,116 +17,115 @@ namespace std
{

template <class InputIterator, class T>
    constexpr T  // constexpr since C++20
    T
    accumulate(InputIterator first, InputIterator last, T init);

template <class InputIterator, class T, class BinaryOperation>
    constexpr T  // constexpr since C++20
    T
    accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op);

template<class InputIterator>
    constexpr typename iterator_traits<InputIterator>::value_type  // constexpr since C++20
    typename iterator_traits<InputIterator>::value_type
    reduce(InputIterator first, InputIterator last);  // C++17

template<class InputIterator, class T>
    constexpr T  // constexpr since C++20
    T
    reduce(InputIterator first, InputIterator last, T init);  // C++17

template<class InputIterator, class T, class BinaryOperation>
    constexpr T  // constexpr since C++20
    T
    reduce(InputIterator first, InputIterator last, T init, BinaryOperation binary_op);  // C++17

template <class InputIterator1, class InputIterator2, class T>
    constexpr T  // constexpr since C++20
    T
    inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init);

template <class InputIterator1, class InputIterator2, class T, class BinaryOperation1, class BinaryOperation2>
    constexpr T  // constexpr since C++20
    T
    inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2,
                  T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2);


template<class InputIterator1, class InputIterator2, class T>
    constexpr T  // constexpr since C++20
    T
    transform_reduce(InputIterator1 first1, InputIterator1 last1,
                     InputIterator2 first2, T init);  // C++17

template<class InputIterator1, class InputIterator2, class T, class BinaryOperation1, class BinaryOperation2>
    constexpr T  // constexpr since C++20
    T
    transform_reduce(InputIterator1 first1, InputIterator1 last1,
                     InputIterator2 first2, T init,
                     BinaryOperation1 binary_op1, BinaryOperation2 binary_op2);  // C++17

template<class InputIterator, class T, class BinaryOperation, class UnaryOperation>
    constexpr T  // constexpr since C++20
    T
    transform_reduce(InputIterator first, InputIterator last, T init,
                     BinaryOperation binary_op, UnaryOperation unary_op);  // C++17

template <class InputIterator, class OutputIterator>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    partial_sum(InputIterator first, InputIterator last, OutputIterator result);

template <class InputIterator, class OutputIterator, class BinaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    partial_sum(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op);

template<class InputIterator, class OutputIterator, class T>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    exclusive_scan(InputIterator first, InputIterator last,
                   OutputIterator result, T init); // C++17

template<class InputIterator, class OutputIterator, class T, class BinaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    exclusive_scan(InputIterator first, InputIterator last,
                   OutputIterator result, T init, BinaryOperation binary_op); // C++17

template<class InputIterator, class OutputIterator>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    inclusive_scan(InputIterator first, InputIterator last, OutputIterator result);  // C++17

template<class InputIterator, class OutputIterator, class BinaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    inclusive_scan(InputIterator first, InputIterator last,
                   OutputIterator result, BinaryOperation binary_op);  // C++17

template<class InputIterator, class OutputIterator, class BinaryOperation, class T>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    inclusive_scan(InputIterator first, InputIterator last,
                   OutputIterator result, BinaryOperation binary_op, T init);  // C++17

template<class InputIterator, class OutputIterator, class T,
         class BinaryOperation, class UnaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    transform_exclusive_scan(InputIterator first, InputIterator last,
                             OutputIterator result, T init,
                             BinaryOperation binary_op, UnaryOperation unary_op);  // C++17

template<class InputIterator, class OutputIterator,
         class BinaryOperation, class UnaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    transform_inclusive_scan(InputIterator first, InputIterator last,
                             OutputIterator result,
                             BinaryOperation binary_op, UnaryOperation unary_op);  // C++17

template<class InputIterator, class OutputIterator,
         class BinaryOperation, class UnaryOperation, class T>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    transform_inclusive_scan(InputIterator first, InputIterator last,
                             OutputIterator result,
                             BinaryOperation binary_op, UnaryOperation unary_op,
                             T init);  // C++17

template <class InputIterator, class OutputIterator>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    adjacent_difference(InputIterator first, InputIterator last, OutputIterator result);

template <class InputIterator, class OutputIterator, class BinaryOperation>
    constexpr OutputIterator  // constexpr since C++20
    OutputIterator
    adjacent_difference(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op);

template <class ForwardIterator, class T>
    constexpr void  // constexpr since C++20
    iota(ForwardIterator first, ForwardIterator last, T value);
    void iota(ForwardIterator first, ForwardIterator last, T value);

template <class M, class N>
    constexpr common_type_t<M,N> gcd(M m, N n);    // C++17
@@ -134,11 +133,9 @@ template <class M, class N>
template <class M, class N>
    constexpr common_type_t<M,N> lcm(M m, N n);    // C++17

template<class T>
    constexpr T midpoint(T a, T b) noexcept;  // C++20

template<class T>
    constexpr T* midpoint(T* a, T* b);        // C++20
integer         midpoint(integer a, integer b);                  // C++20
pointer         midpoint(pointer a, pointer b);                  // C++20
floating_point  midpoint(floating_point a, floating_point b);    // C++20

}  // std

@@ -161,7 +158,7 @@ _LIBCPP_PUSH_MACROS
_LIBCPP_BEGIN_NAMESPACE_STD

template <class _InputIterator, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
{
@@ -171,7 +168,7 @@ accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
}

template <class _InputIterator, class _Tp, class _BinaryOperation>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op)
{
@@ -182,7 +179,7 @@ accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOpe

#if _LIBCPP_STD_VER > 14
template <class _InputIterator, class _Tp, class _BinaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b)
{
@@ -192,7 +189,7 @@ reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b)
}

template <class _InputIterator, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
reduce(_InputIterator __first, _InputIterator __last, _Tp __init)
{
@@ -200,7 +197,7 @@ reduce(_InputIterator __first, _InputIterator __last, _Tp __init)
}

template <class _InputIterator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
typename iterator_traits<_InputIterator>::value_type
reduce(_InputIterator __first, _InputIterator __last)
{
@@ -210,7 +207,7 @@ reduce(_InputIterator __first, _InputIterator __last)
#endif

template <class _InputIterator1, class _InputIterator2, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init)
{
@@ -220,7 +217,7 @@ inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2
}

template <class _InputIterator1, class _InputIterator2, class _Tp, class _BinaryOperation1, class _BinaryOperation2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2,
              _Tp __init, _BinaryOperation1 __binary_op1, _BinaryOperation2 __binary_op2)
@@ -232,7 +229,7 @@ inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2

#if _LIBCPP_STD_VER > 14
template <class _InputIterator, class _Tp, class _BinaryOp, class _UnaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
transform_reduce(_InputIterator __first, _InputIterator __last,
           _Tp __init,  _BinaryOp __b, _UnaryOp __u)
@@ -244,7 +241,7 @@ transform_reduce(_InputIterator __first, _InputIterator __last,

template <class _InputIterator1, class _InputIterator2,
          class _Tp, class _BinaryOp1, class _BinaryOp2>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
                 _InputIterator2 __first2, _Tp __init,  _BinaryOp1 __b1, _BinaryOp2 __b2)
@@ -255,7 +252,7 @@ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
}

template <class _InputIterator1, class _InputIterator2, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_Tp
transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
                 _InputIterator2 __first2, _Tp __init)
@@ -266,7 +263,7 @@ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
#endif

template <class _InputIterator, class _OutputIterator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
@@ -284,7 +281,7 @@ partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __res
}

template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result,
              _BinaryOperation __binary_op)
@@ -304,7 +301,7 @@ partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __res

#if _LIBCPP_STD_VER > 14
template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
exclusive_scan(_InputIterator __first, _InputIterator __last,
               _OutputIterator __result, _Tp __init, _BinaryOp __b)
@@ -324,7 +321,7 @@ exclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
exclusive_scan(_InputIterator __first, _InputIterator __last,
               _OutputIterator __result, _Tp __init)
@@ -333,7 +330,6 @@ exclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,
                               _OutputIterator __result, _BinaryOp __b,  _Tp __init)
{
@@ -345,7 +341,6 @@ _OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator, class _BinaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,
                               _OutputIterator __result, _BinaryOp __b)
{
@@ -360,7 +355,6 @@ _OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,
                               _OutputIterator __result)
{
@@ -369,7 +363,7 @@ _OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last,

template <class _InputIterator, class _OutputIterator, class _Tp,
          class _BinaryOp, class _UnaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
transform_exclusive_scan(_InputIterator __first, _InputIterator __last,
                           _OutputIterator __result, _Tp __init,
@@ -390,9 +384,7 @@ transform_exclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOp, class _UnaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
_OutputIterator transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
                           _OutputIterator __result, _BinaryOp __b, _UnaryOp __u, _Tp __init)
{
    for (; __first != __last; ++__first, (void) ++__result) {
@@ -404,9 +396,7 @@ transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
}

template <class _InputIterator, class _OutputIterator, class _BinaryOp, class _UnaryOp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
_OutputIterator
transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
_OutputIterator transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
                               _OutputIterator __result, _BinaryOp __b, _UnaryOp __u)
{
    if (__first != __last) {
@@ -421,7 +411,7 @@ transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
#endif

template <class _InputIterator, class _OutputIterator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
@@ -440,7 +430,7 @@ adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterat
}

template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result,
                      _BinaryOperation __binary_op)
@@ -460,7 +450,7 @@ adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterat
}

template <class _ForwardIterator, class _Tp>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
inline _LIBCPP_INLINE_VISIBILITY
void
iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value_)
{
+0 −2
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ __cpp_lib_concepts 201806L <concepts>
__cpp_lib_constexpr_dynamic_alloc                       201907L <memory>
__cpp_lib_constexpr_misc                                201811L <array> <functional> <iterator>
                                                                <string_view> <tuple> <utility>
__cpp_lib_constexpr_numeric                             201911L <numeric>
__cpp_lib_constexpr_swap_algorithms                     201806L <algorithm>
__cpp_lib_constexpr_utility                             201811L <utility>
__cpp_lib_destroying_delete                             201806L <new>
@@ -255,7 +254,6 @@ __cpp_lib_void_t 201411L <type_traits>
// # define __cpp_lib_concepts                             201806L
# define __cpp_lib_constexpr_dynamic_alloc              201907L
// # define __cpp_lib_constexpr_misc                       201811L
# define __cpp_lib_constexpr_numeric                    201911L
// # define __cpp_lib_constexpr_swap_algorithms            201806L
# define __cpp_lib_constexpr_utility                    201811L
# if _LIBCPP_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
+0 −20
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@
// Test the feature test macros defined by <numeric>

/*  Constant                        Value
    __cpp_lib_constexpr_numeric     201911L [C++2a]
    __cpp_lib_gcd_lcm               201606L [C++17]
    __cpp_lib_interpolate           201902L [C++2a]
    __cpp_lib_parallel_algorithm    201603L [C++17]
@@ -25,10 +24,6 @@

#if TEST_STD_VER < 14

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifdef __cpp_lib_gcd_lcm
#   error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
@@ -43,10 +38,6 @@

#elif TEST_STD_VER == 14

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifdef __cpp_lib_gcd_lcm
#   error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
@@ -61,10 +52,6 @@

#elif TEST_STD_VER == 17

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifndef __cpp_lib_gcd_lcm
#   error "__cpp_lib_gcd_lcm should be defined in c++17"
# endif
@@ -91,13 +78,6 @@

#elif TEST_STD_VER > 17

# ifndef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should be defined in c++2a"
# endif
# if __cpp_lib_constexpr_numeric != 201911L
#   error "__cpp_lib_constexpr_numeric should have the value 201911L in c++2a"
# endif

# ifndef __cpp_lib_gcd_lcm
#   error "__cpp_lib_gcd_lcm should be defined in c++2a"
# endif
+0 −20
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@
    __cpp_lib_concepts                             201806L [C++2a]
    __cpp_lib_constexpr_dynamic_alloc              201907L [C++2a]
    __cpp_lib_constexpr_misc                       201811L [C++2a]
    __cpp_lib_constexpr_numeric                    201911L [C++2a]
    __cpp_lib_constexpr_swap_algorithms            201806L [C++2a]
    __cpp_lib_constexpr_utility                    201811L [C++2a]
    __cpp_lib_destroying_delete                    201806L [C++2a]
@@ -228,10 +227,6 @@
#   error "__cpp_lib_constexpr_misc should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_swap_algorithms
#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
# endif
@@ -624,10 +619,6 @@
#   error "__cpp_lib_constexpr_misc should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_swap_algorithms
#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
# endif
@@ -1134,10 +1125,6 @@
#   error "__cpp_lib_constexpr_misc should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should not be defined before c++2a"
# endif

# ifdef __cpp_lib_constexpr_swap_algorithms
#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
# endif
@@ -1923,13 +1910,6 @@
#   endif
# endif

# ifndef __cpp_lib_constexpr_numeric
#   error "__cpp_lib_constexpr_numeric should be defined in c++2a"
# endif
# if __cpp_lib_constexpr_numeric != 201911L
#   error "__cpp_lib_constexpr_numeric should have the value 201911L in c++2a"
# endif

# if !defined(_LIBCPP_VERSION)
#   ifndef __cpp_lib_constexpr_swap_algorithms
#     error "__cpp_lib_constexpr_swap_algorithms should be defined in c++2a"
Loading