Jak*_*son 0 c++ variadic-templates
我不确定如何从我编写的可变参数模板函数中获得特定效果。下面是我编写的函数。
template<typename ... T>
bool multiComparision(const char scope, T ... args) {
return (scope == (args || ...));
}
Run Code Online (Sandbox Code Playgroud)
有人向我指出,尽管没有在较大的代码范围内创建任何错误,但这样做实际上与我想要的有所不同。
multiComparision('a', '1', '2', '3');
=>
return ('a' == ('1' || '2' || '3'));
Run Code Online (Sandbox Code Playgroud)
我实际上打算让该函数返回以下内容
multiComparision('a', '1', '2', '3');
=>
return ('a' == '1' || 'a' == '2' || 'a' == '3');
Run Code Online (Sandbox Code Playgroud)
如何达到预期的效果?
如何达到预期的效果?
将等式比较表达式括在括号中:
template<typename ... T>
bool multiComparision(const char scope, T ... args) {
return ((scope == args) || ...);
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)