25 lines · plain
1// (C) Copyright Matt Borland 2022.2// Use, modification and distribution are subject to the3// Boost Software License, Version 1.0. (See accompanying file4// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)5//6// Macros that substitute for STL concepts or typename depending on availability of <concepts>7 8#ifndef BOOST_MATH_TOOLS_CONCEPTS_HPP9#define BOOST_MATH_TOOLS_CONCEPTS_HPP10 11// LLVM clang supports concepts but apple's clang does not fully support at version 1312// See: https://en.cppreference.com/w/cpp/compiler_support/2013#if (__cplusplus > 202000L || _MSVC_LANG > 202000L)14# if __has_include(<concepts>) && (!defined(__APPLE__) || (defined(__APPLE__) && defined(__clang__) && __clang__ > 13))15# include <concepts>16# define BOOST_MATH_FLOATING_POINT_TYPE std::floating_point17# else18# define BOOST_MATH_FLOATING_POINT_TYPE typename19# endif20#else21# define BOOST_MATH_FLOATING_POINT_TYPE typename22#endif23 24#endif // BOOST_MATH_TOOLS_CONCEPTS_HPP25