有用於檢測是否類型是否匹配這一標準方式:C++模板化類型檢查編譯時線程安全嗎?
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;
這看起來,因爲它使用靜態成員變量對我來說不是線程安全的。它真的不是線程安全的嗎?該代碼以某種方式困惑了我。有什麼更換,以使具有相同功能的線程安全的東西?
爲什麼我需要這個?
我有一個處理矩陣的模板化類,我想用英特爾編譯器數學核心庫進行矩陣乘法和反演,其中函數對於每種類型都是不同的,所以我必須在執行之前知道類型矩陣運算。
謝謝。
靜態成員不是一個好的設計。使用繼承(儘管如評論中所說,這些都是編譯時檢查 - 對於線程安全來說不是問題) –