Hello, in a code that I am currently reading I have found that code:
template <size_t> struct MPI_Select_unsigned_integer_datatype; template <> struct MPI_Select_unsigned_integer_datatype<1> { static MPI_Datatype datatype; }; MPI_Datatype MPI_Select_unsigned_integer_datatype<1>::datatype = MPI_UNSIGNED_CHAR; template <> struct MPI_Select_unsigned_integer_datatype<2> { static MPI_Datatype datatype; }; MPI_Datatype MPI_Select_unsigned_integer_datatype<2>::datatype = MPI_UNSIGNED_SHORT; template <> struct MPI_Select_unsigned_integer_datatype<4> { static MPI_Datatype datatype; }; MPI_Datatype MPI_Select_unsigned_integer_datatype<4>::datatype = MPI_UNSIGNED; template <> struct MPI_Select_unsigned_integer_datatype<8> { static MPI_Datatype datatype; }; MPI_Datatype MPI_Select_unsigned_integer_datatype<8>::datatype = MPI_UNSIGNED_LONG; #define MPI_BOOL MPI_Select_unsigned_integer_datatype<sizeof(bool)>::datatype It redefines MPI_BOOL based on the size of bool. I wonder if this is needed and why? I was speculating that the compiler could pack multiple bools in one word, when used as a array. But the code above is a compile time specialization and won't help there. Best Thanks, Florian _______________________________________________ users mailing list users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/users