gpt4 book ai didi

c++ - 使用自由函数作为伪构造函数来利用模板参数推导

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:04 24 4
gpt4 key购买 nike

使用自由函数作为伪构造函数以避免显式指定模板参数是否是一种常见的模式/习惯用法?

比如大家都知道std::make_pair ,它使用它的参数来推断 pair类型:

template <class A, class B>
std::pair<A, B> make_pair(A a, B b)
{
return std::pair<A, B>(a, b);
}

// This allows you to call make_pair(1, 2),
// instead of having to type pair<int, int>(1, 2)
// as you can't get type deduction from the constructor.

STL 在 <functional> 中也大量使用了它( bind1stnot1ptr_fun 等...)

我发现自己经常使用它,所以我只是想知道是否有很多其他人使用它,是否有这种模式的名称?

最佳答案

显然它叫做“对象生成器”。参见 "More C++ Idioms""Boost"关于这个话题。

我个人觉得它非常有用并且经常使用它。

此外,我认为人们可能会将表达式模板视为一种特殊形式的对象生成器,因为它们所做的只是通过您通常也可以手动指定的操作数类型和数据构造复杂类型。除了,他们正在隐式调用生成器

a + b + c =>
Add<Add<A, B>, C>(...)

关于c++ - 使用自由函数作为伪构造函数来利用模板参数推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466507/

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