如果我有一個函數模板可以爲所有類型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