当前位置:  开发笔记 > 编程语言 > 正文

获取参数包中的参数类型

如何解决《获取参数包中的参数类型》经验,为你挑选了1个好方法。

所以我们假设我们有以下代码:

#include 

template
auto make_stack(Args&&... args)
{
    std::stack s;
    return s;
}

int main()
{
    auto s = make_stack(1, 2.2, 3); //would be std::stack
    auto s2 = make_stack(1l, 2, 3); //would be std::stack
}

如何在参数包中找到常见的参数类型?



1> vsoftco..:

使用std::common_type.它是一种类型特征,它提供了可以转换为所有类型的公共类型.所以在你的情况下你需要:

template
auto make_stack(Args&&... args)
{
    using commonT = std::common_type_t;
    std::stack s;
    return s;
}

编辑正如@DietmarKühl在评论中提到的,如果使用C++ 11而不是C++ 14 std::decay,commonT则可能需要使用on .std::decay从C++ 14开始,它看起来像是应用于结果类型.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有