如果所有调用都返回,则函数all_checked
意味着返回,否则。true
parse(...)
true
false
如何将所有输出链接在一起,以便我有效地得到
success = parse(args[0]) && parse(args[1]) && parse(args[2]) && ...;
现在,它只返回parse(...)
最后一个元素。
#include <string>
template<class T>
bool parse(const T& val)
{
if constexpr (std::is_same_v<T, int> || std::is_same_v<T, std::string>)
return true;
else
return false;
}
template<class... Args>
bool all_checked(const Args& ... args)
{
bool success = (parse(args), ...); // should be true if all parse(...) are true
return success;
}
int main()
{
bool result = all_checked(1, 5.9, std::string("abc"));
}
我尝试过其他语法,例如
bool success = true;
(success = success && parse(args), ...);
但它没有编译。