Common concepts#
Note
Generic functions and classes in mp++ support concepts to constrain the types with which they can be used. C++ concepts are part of the C++20 standard, and they are currently available only on GCC>=6, Clang>=10 and MSVC>=16.3. When used with compilers which do not support concepts natively, mp++ will employ a concept emulation layer in order to provide the same functionality as native C++ concepts.
Since the syntax of native C++ concepts is clearer than that of the concept emulation layer, the mp++ documentation describes and refers to concepts in their native C++ form.
#include <mp++/concepts.hpp>
-
template<typename T>
concept mppp::cpp_integral# This concept is satisfied if
T
is an integral C++ type.The GCC-style extended 128-bit integral types
__int128_t
and__uint128_t
are included as well, if supported on the current platform/compiler combination (see also theMPPP_HAVE_GCC_INT128
definition).
-
template<typename T>
concept mppp::cpp_unsigned_integral# This concept is satisfied if
T
is an unsignedcpp_integral
.
-
template<typename T>
concept mppp::cpp_signed_integral# This concept is satisfied if
T
is a signedcpp_integral
.
-
template<typename T>
concept mppp::cpp_floating_point# This concept is satisfied if
T
is a floating-point C++ type.
-
template<typename T>
concept mppp::cpp_arithmetic# This concept is satisfied if
T
is either acpp_integral
or acpp_floating_point
type.
-
template<typename T>
concept mppp::cpp_complex# This concept is satisfied if
T
is one of the standard complex C++ types:std::complex<float>
,std::complex<double>
,std::complex<long double>
.
-
template<typename T>
concept mppp::string_type# This concept is satisfied by C++ string-like types. Specifically, the concept will be true if
T
, after the removal of cv qualifiers, is one of the following types:std::string
,a pointer to (possibly cv qualified)
char
,a
char
array of any size.
Additionally, if at least C++17 is being used, the concept is satisfied also by
std::string_view
(see also theMPPP_HAVE_STRING_VIEW
definition).