【发布时间】:2020-10-27 09:56:41
【问题描述】:
我想要一个模板类(例如 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;,但这似乎有太多的开销和混乱。有没有一种方法可以使用上面所需的单个模板参数来实现相同的效果?
【问题讨论】:
-
C++20 的概念呢? en.cppreference.com/w/cpp/language/constraints
-
如果存在解决方案,我想坚持使用 C++11。
标签: c++ class c++11 templates class-template