我努力做到以下几点:错误无法接通块
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