cuda::experimental::stf::shuffled_args_check

Defined in include/cuda/experimental/__stf/utility/traits.cuh

template<typename ...ArgTypes, typename ...DataTypes>
void cuda::experimental::stf::shuffled_args_check(const DataTypes&...)

Checks the convertibility of argument types to a set of data types.

This function checks if each type in ArgTypes is convertible to exactly one type in DataTypes. If a type is not convertible to exactly one type, a static assertion will fail at compile time.

struct A {};
struct B {};
struct C {};
struct D {};

A a;
B b;
C c;
D d;

// This will compile successfully because each type A, B, C is convertible to itself and only itself.
shuffled_args_check<A, B, C>(c, a, b);

// This will fail to compile because type D is not provided in the DataTypes.
// shuffled_args_check<A, B, C>(a, b, c, d);

// This will fail to compile because int is convertible to both float and double, causing ambiguity.
// shuffled_args_check<int, float, double>(5);

Note

A static_assert error occurs if a type is not convertible to exactly one type.

Template Parameters
  • ArgTypes – The types to check the convertibility of.

  • DataTypes – The types to check the convertibility to.

Parameters

unused – The data of the types to check the convertibility to.