Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

Struct template is_mpi_datatype

boost::mpi::is_mpi_datatype — Type trait that determines if a C++ type can be mapped to an MPI data type.


// In header: <boost/mpi/datatype.hpp>

template<typename T> 
struct is_mpi_datatype : public boost::mpi::is_mpi_builtin_datatype< T > {


This type trait determines if it is possible to build an MPI data type that represents a C++ data type. When this is the case, is_mpi_datatype derives mpl::true_ and the MPI data type will be accessible via get_mpi_datatype.

For any C++ type that maps to a built-in MPI data type (see is_mpi_builtin_datatype), is_mpi_data_type is trivially true. However, any POD ("Plain Old Data") type containing types that themselves can be represented by MPI data types can itself be represented as an MPI data type. For instance, a point3d class containing three double values can be represented as an MPI data type. To do so, first make the data type Serializable (using the Boost.Serialization library); then, specialize the is_mpi_datatype trait for the point type so that it will derive mpl::true_:

namespace boost { namespace mpi {
  template<> struct is_mpi_datatype<point>
    : public mpl::true_ { };
} }