我有一個模板,我想根據參數的類型進行有條件編譯。我只關心區分「普通舊數據」(POD),即整數等或類/結構。我在Windows上使用C++ VS2008。使用Boost類型特徵的條件編譯
template<T>
class foo
{
void bar(T do_something){
#if IS_POD<T>
do something for simple types
#else
do something for classes/structs
#endif
}}
我一直在尋找增強庫,我可以看到他們似乎有我想要的。但是,我不明白#if
聲明的正確語法是什麼。
任何幫助,將不勝感激。
編輯--- 閱讀的答覆後,我看到了我在這個問題的定義忽略了什麼。類foo
是一個模板類,只需要將bar
的版本實例化爲class type T
即可。我正在尋找可以在編譯時解決的解決方案。希望這清除了我的問題。
這將是一個編譯錯誤,一旦類模板實例,'T'是固定的,在這一點上,當您嘗試調用'bar'會看到兩個定義,它將無法編譯其中之一。請注意,這不是SFINAE,因爲它不會是替代失敗 - 類型在成員的實例化之前是固定的(或者我認爲,我不確定這些東西:))。 – 2010-07-29 23:28:19