Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:40:39

0001 //  (C) Copyright Matt Borland 2022.
0002 //  Use, modification and distribution are subject to the
0003 //  Boost Software License, Version 1.0. (See accompanying file
0004 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0005 //
0006 //  Macros that substitute for STL concepts or typename depending on availability of <concepts>
0007 
0008 #ifndef BOOST_MATH_TOOLS_CONCEPTS_HPP
0009 #define BOOST_MATH_TOOLS_CONCEPTS_HPP
0010 
0011 // LLVM clang supports concepts but apple's clang does not fully support at version 13
0012 // See: https://en.cppreference.com/w/cpp/compiler_support/20
0013 #if (__cplusplus > 202000L || _MSVC_LANG > 202000L)
0014 #  if __has_include(<concepts>) && (!defined(__APPLE__) || (defined(__APPLE__) && defined(__clang__) && __clang__ > 13))
0015 #    include <concepts>
0016 #    define BOOST_MATH_FLOATING_POINT_TYPE std::floating_point
0017 #  else
0018 #    define BOOST_MATH_FLOATING_POINT_TYPE typename
0019 #  endif
0020 #else
0021 #  define BOOST_MATH_FLOATING_POINT_TYPE typename
0022 #endif
0023 
0024 #endif // BOOST_MATH_TOOLS_CONCEPTS_HPP