...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::mpi::is_mpi_builtin_datatype — Type trait that determines if there exists a built-in MPI data type for a given C++ type.
// In header: <boost/mpi/datatype.hpp> template<typename T> struct is_mpi_builtin_datatype : public boost::mpl::or_< is_mpi_integer_datatype< T >, is_mpi_floating_point_datatype< T >, is_mpi_logical_datatype< T >, is_mpi_complex_datatype< T >, is_mpi_byte_datatype< T > > { };
This type trait determines when there is a direct mapping from a C++ type to an MPI type. For instance, the C++ int
type maps directly to the MPI type MPI_INT
. When there is a direct mapping from the type T
to an MPI type, is_mpi_builtin_datatype
will derive from mpl::true_
and the MPI data type will be accessible via get_mpi_datatype
.
In general, users should not need to specialize this trait. However, if you have an additional C++ type that can map directly to only of MPI's built-in types, specialize either this trait or one of the traits corresponding to categories of MPI data types (is_mpi_integer_datatype
, is_mpi_floating_point_datatype
, is_mpi_logical_datatype
, is_mpi_complex_datatype
, or is_mpi_builtin_datatype
). is_mpi_builtin_datatype
derives mpl::true_
if any of the traits corresponding to MPI data type categories derived mpl::true_
.