我努力做到以下幾點:錯誤無法接通塊
template <class T>
void foo(T * ptr){
...a lot of code ...
if(std::is_base_of<Bar<T>,T>::value){
Bar<T> & bar = *ptr;
...a lot of code ...
}
...a lot of code
}
如果我編譯這個功能有哪些是酒吧的一個子類,一切工作正常,但如果我嘗試用編譯這是沒有,我得到一個錯誤在
Bar<T> & bar = *ptr;
線。 這是怎麼回事,因爲當T
不是Bar<T>
的一個子類時,這條線將被執行? 如果這不是通常的做法,我怎麼才能以正確的方式實現這一點?
「未執行」是不一樣的「未編譯」。 –
這是一個模板,編譯器必須爲其生成代碼,即使存在會阻止模板初始化的條件。 – Rakete1111
好的,我明白了。但我怎麼能以正確的方式做到這一點? – Exagon