25 lines
987 B
C++
25 lines
987 B
C++
// (C) Copyright Matt Borland 2022.
|
|
// Use, modification and distribution are subject to the
|
|
// Boost Software License, Version 1.0. (See accompanying file
|
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
// Macros that substitute for STL concepts or typename depending on availability of <concepts>
|
|
|
|
#ifndef BOOST_MATH_TOOLS_CONCEPTS_HPP
|
|
#define BOOST_MATH_TOOLS_CONCEPTS_HPP
|
|
|
|
// LLVM clang supports concepts but apple's clang does not fully support at version 13
|
|
// See: https://en.cppreference.com/w/cpp/compiler_support/20
|
|
#if (__cplusplus > 202000L || _MSVC_LANG > 202000L)
|
|
# if __has_include(<concepts>) && (!defined(__APPLE__) || (defined(__APPLE__) && defined(__clang__) && __clang__ > 13))
|
|
# include <concepts>
|
|
# define BOOST_MATH_FLOATING_POINT_TYPE std::floating_point
|
|
# else
|
|
# define BOOST_MATH_FLOATING_POINT_TYPE typename
|
|
# endif
|
|
#else
|
|
# define BOOST_MATH_FLOATING_POINT_TYPE typename
|
|
#endif
|
|
|
|
#endif // BOOST_MATH_TOOLS_CONCEPTS_HPP
|