Tim*_*Tim 3 c++ inheritance templates return
是否可以声明一个模板函数,其中某个类型来自于让我们说B?
我的目标是实现这样的目标:
template<class T : std::ostream> void write(T os) {
os << "...";
}
template<class T : std::string> void write(T s) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道这不是一个可靠的例子,因为从字符串派生并不常见,但请注意,这只是一个例子.
因此欢迎任何解决方案,如变通方法,但我希望能够显式实例化模板函数.
是的,使用C++ 11 <type_traits>
可以实现.
如果你只有C++ 03,你可以改用Boost <type_traits>
.
template <typename T>
typename std::enable_if<std::is_base_of<std::ostream, T>::value>::type
write(T& os) {
}
Run Code Online (Sandbox Code Playgroud)