有这种检查类型是否匹配的标准方法:
template<class T, class U>
struct is_same { static const bool value = false; };
template<class T>
struct is_same<T, T> { static const bool value = true; };
我像这样使用它:
if (SamTypeCheck<double,double>::value)
cout<<"same"<<endl;
else
cout<<"different"<<endl;
if (SamTypeCheck<int,double>::value)
cout<<"same"<<endl;
else
cout<<"different"<<endl;
这在我看来不是线程安全的,因为它使用静态成员变量。它真的不是线程安全的吗?该代码以某种方式使我感到困惑。具有相同功能的线程安全的替代品是什么?
为什么我需要这个?
我有一个用于处理矩阵的模板化类,我想使用 Intel Compiler Math Kernel Library 进行矩阵乘法和求逆,其中每种类型的函数都不同,所以在执行矩阵运算之前我必须知道类型。
谢谢你。