如果我有一个函数模板可以为所有类型Stream
(例如,何时将模板参数类型约束为具体的类
template<typename Stream>
Stream& foo(Stream& stream)
{
return stream;
}
是否有限制类型为具体类的任何优点,例如,
template<typename CharT, Traits>
std::basic_istream<CharT, Traits>& foo(std::basic_istream<CharT, Traits>& stream)
{
return stream;
}
还是应该函数/类模板作为一个经验法则总是尽可能通用的,即使你有特定类型的想法?
如果你的模板函数只能在文档中的某些约束条件下工作。有人可能会提供一个类似istream的类,它可以在你的原始情况下工作,但不能在你的更明确的情况下工作。 – Zeta 2013-04-27 11:44:33