1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#include <unittest/runtime_static_assert.h>
#include <unittest/unittest.h>
// The runtime_static_assert header needs to come first as we are overwriting thrusts internal static assert
#include <thrust/generate.h>
template <typename T>
struct dependent_false
{
enum
{
value = false
};
};
template <typename T>
struct static_assertion
{
_CCCL_HOST_DEVICE T operator()() const
{
THRUST_STATIC_ASSERT(dependent_false<T>::value);
return 0;
}
};
template <typename V>
void TestStaticAssertAssert()
{
using value_type = typename V::value_type;
V test(10);
ASSERT_STATIC_ASSERT(thrust::generate(test.begin(), test.end(), static_assertion<value_type>()));
}
DECLARE_VECTOR_UNITTEST(TestStaticAssertAssert);
|