gpt4 book ai didi

c++ - 对可变参数模板函数的误解

转载 作者:太空宇宙 更新时间:2023-11-04 15:29:11 25 4
gpt4 key购买 nike

我不确定如何通过我编写的可变参数模板函数实现特定效果。下面是我写的函数。

template<typename ... T>
bool multiComparision(const char scope, T ... args) {
return (scope == (args || ...));
}

有人向我指出,这实际上执行了一些与我想要的不同的事情,尽管在我的代码的更大范围内没有产生任何错误。

multiComparision('a', '1', '2', '3');

=>
return ('a' == ('1' || '2' || '3'));

我实际上想让函数返回以下内容

multiComparision('a', '1', '2', '3');

=>
return ('a' == '1' || 'a' == '2' || 'a' == '3');

怎样才能达到预期的效果?

最佳答案

How can I achieve the desired effect?

将相等比较表达式括在括号中:

template<typename ... T>
bool multiComparision(const char scope, T ... args) {
return ((scope == args) || ...);
}

live example on godbolt.org


C++14 解决方案:

template<typename ... T>
constexpr bool multiComparision(const char scope, T ... args) {
bool result = false;
(void) std::initializer_list<int>{
((result = result || (scope == args)), 0)...
};
return result;
}

live example on godbolt.org

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

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