可变参数模板与使用元组在参数中添加不同的数据对

阿马雷什

以下主要代码工作正常

    string hello = "Hello ";
    string world = "templates!";

    cout << "var template add: ";


    cout << setprecision(2) <<
        var_template_add(5, 4, 5.5, 4.0);

用于遵循模板生成器代码和可变参数函数

template <typename T> 
auto add(T a, T b) {
    return a + b;
}


template <typename T, typename... Rest> 
auto var_template_add(T first, T second, Rest... others) {
    return first + second + add (others...);
}

但是,如果再添​​加两个字符串args,就像这样

var_template_add(5, 4, 5.5, 4.0, hello, world);

被编译器错误捕获,提示“找不到匹配的重载函数”。

再次,

string hello = "Hello ";
string world = "templates!";
cout << "strings add result: " << setprecision(2) << add(hello, world) << endl;

如果我像下面这样写模板函数“添加”,则可以工作:

template <typename T1, typename T2>
auto add(T1 a, T2 b) {
    return a + b;
}

我的问题是,我怎么能排成一线

var_template_add(5, 4, 5.5, 4.0, hello, world);

工作而无需编写上面的另一个添加功能?

请注意,我可以使用元组来传递此值,但就目前而言,我只想远离。有什么想法/改进吗?

慈济

当前工作调用的唯一方法是var_template_add返回单个类型,因此它必须是字符串。

相反,您可以cout在函数内部编写代码,因此您只需要:

template <typename T, typename... Rest> 
auto var_template_add(T first, T second, Rest... others) {
    cout << setprecision(2) << (first + second) << " ";
    if constexpr (sizeof...(others)) var_template_add(others...);
}

这是一个演示

请注意,没有if constexprpre c ++ 17,因此在这种情况下,将额外的重载作为基本情况是一个不错的选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用可变参数模板扩展

来自分类Dev

decltype中的可变参数模板包

来自分类Dev

如何通过使用可变参数模板参数来专门化元组的类模板?

来自分类Dev

如何使用C ++ 11可变参数模板定义由向量元组支持的向量元组?

来自分类Dev

可变参数模板类的可变参数模板

来自分类Dev

可变参数模板和Alexandrescu元组实现

来自分类Dev

可变参数模板的数据结构

来自分类Dev

元组和可变参数模板,这是如何工作的?

来自分类Dev

使用可变参数模板的工厂模式?

来自分类Dev

使用可变参数模板制作类似元组的编译时“链接列表”

来自分类Dev

不同的可变参数模板扩展

来自分类Dev

将可变参数模板参数用于元组失败的向量

来自分类Dev

在可变参数模板类的构造函数中初始化元组成员

来自分类Dev

嵌套类中的可变参数模板

来自分类Dev

clang不使用可变参数推断可变参数模板函数中的模板参数

来自分类Dev

创建从可变参数模板包派生的类型的元组

来自分类Dev

解开元组可变参数模板参数

来自分类Dev

С++可变参数模板:实现可变参数

来自分类Dev

可变参数模板中的shared_ptr元组?

来自分类Dev

可变参数模板中的shared_ptr元组?

来自分类Dev

使用可变参数模板打印列表

来自分类Dev

在D中,如何在整个元组上指定可变参数模板约束?

来自分类Dev

如何使用C ++ 11可变参数模板定义由向量元组支持的向量元组?

来自分类Dev

具有元组的C ++可变参数模板

来自分类Dev

可变参数模板类的可变参数模板

来自分类Dev

元组上的递归可变参数模板方法

来自分类Dev

可变参数模板对

来自分类Dev

在可变参数模板中使用对

来自分类Dev

可变参数模板中的函数顺序

Related 相关文章

热门标签

归档