gpt4 book ai didi

c++ - 类型限制的可变参数模板函数

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

我可以编写以下代码来定义一个接受任意数量参数的函数:

template <typename... Arguments>
void f(Arguments... sums) {
// Do something.
}

然后像这样调用它

f(1, 2, 3, 4);

但是我如何将所有参数限制为例如内部?

最佳答案

使用来自 this SO answerall_true您可以使用以下内容:

#include <type_traits>

template <bool...> struct bool_pack;

template <bool... v>
using all_true = std::is_same<bool_pack<true, v...>, bool_pack<v..., true>>;

template<typename... Args,
typename = std::enable_if_t<all_true<std::is_same<int, Args>{}...>{}>>
void f(Args... sums)
{
// Do something.
}

int main()
{
f(1, 2, 3, 4);
f(1.1, 2, 3, 4); // compile error
}

live example

关于c++ - 类型限制的可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34842346/

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