gpt4 book ai didi

c++ - 何时将模板参数类型限制为具体类

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:40 25 4
gpt4 key购买 nike

如果我有一个可以为所有类型 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;
}

或者作为经验法则,函数/类模板是否应该始终尽可能通用,即使您心中有特定的类型?

最佳答案

我们在当前的 C++ 中还没有约束或概念,因此您以前的模板接口(interface)比需要的更通用,因为它也接受其接口(interface)中不是流的类型。当你调用你的函数模板并且它被重载时,这将导致容易产生歧义。

所以让你的函数模板尽可能通用,但不要比需要的更通用。在这种情况下,您最好将精力投入到其他事情上。

关于c++ - 何时将模板参数类型限制为具体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16251689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com