我希望能够有一个模板类(例如float
/double
类型),但是我正在使用Nvidia CUDA和OptiX,并且有多种其他类型(例如float2
、double2
、float3
等),这些类型都取决于所选择的模板类型。
类似于下面这样:
#include <optixu/optixu_vector_types.h>
#include <type_traits>
template <class T>
class MyClass
{
MyClass()
{
if (std::is_same<T, float>::value)
{
typedef optix::float2 T2;
}
else if (std::is_same<T, double>::value)
{
typedef optix::double2 T2;
}
T2 my_T2_variable;
}
void SomeFunction()
{
T2 another_T2_variable;
};
};
目前我的解决方案是使用多个模板参数 MyClass<T,T2,T3> my_object;
,但这样会有太多的开销和杂乱无章。是否有一种方法可以只使用单个模板参数来实现所需的相同效果?