| Home | Libraries | People | FAQ | More

## Struct template is_mpi_builtin_datatype

boost::mpi::is_mpi_builtin_datatype — Type trait that determines if there exists a built-in MPI data type for a given C++ type.

## Synopsis

    // 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 > >
    {
    };

## Description

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_`.