blob: d61d7fd4efd6191c5bb70d4a0472a1d85d947998 [file] [log] [blame]
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// <numeric>
// template <class _Tp>
// _Tp midpoint(_Tp __a, _Tp __b) noexcept
//
#include <numeric>
#include <cassert>
#include "test_macros.h"
// Users are not supposed to provide template argument lists for
// functions in the standard library (there's an exception for min and max)
// However, libc++ protects against this for pointers, so we check to make
// sure that our protection is working here.
// In some cases midpoint<int>(0,0) might get deduced as the pointer overload.
template <typename T>
void test()
{
ASSERT_SAME_TYPE(T, decltype(std::midpoint<T>(0, 0)));
}
int main(int, char**)
{
test<signed char>();
test<short>();
test<int>();
test<long>();
test<long long>();
test<int8_t>();
test<int16_t>();
test<int32_t>();
test<int64_t>();
test<unsigned char>();
test<unsigned short>();
test<unsigned int>();
test<unsigned long>();
test<unsigned long long>();
test<uint8_t>();
test<uint16_t>();
test<uint32_t>();
test<uint64_t>();
#ifndef _LIBCPP_HAS_NO_INT128
test<__int128_t>();
test<__uint128_t>();
#endif
test<char>();
test<ptrdiff_t>();
test<size_t>();
return 0;
}