// test must be in a plain function because nvcc sucks (extended lambdas are
// not allowed to be defined in protected class member functions)
template<typenameArrayType>
voidtestArrayForEachElement()
{
usingArrayType=typenameTestFixture::ArrayType;
usingIndexType=typenameArrayType::IndexType;
usingValueType=typenameArrayType::ValueType;
#if not defined HAVE_CUDA
// nvcc does not accept the following code with
// error #3068-D: The enclosing parent function ("TestBody") for an extended __host__ __device__ lambda cannot have private or protected access within its class
// test must be in a plain function because nvcc sucks (extended lambdas are
// not allowed to be defined in protected class member functions)
template<typenameVectorType>
voidtestVectorReduceElements()
{
usingVectorType=typenameTestFixture::VectorType;
usingIndexType=typenameVectorType::IndexType;
usingValueType=typenameVectorType::ValueType;
#if not defined HAVE_CUDA
// nvcc does not accept the following code with
// error #3068-D: The enclosing parent function ("TestBody") for an extended __host__ __device__ lambda cannot have private or protected access within its class