gpt4 book ai didi

c++ - C++ 中的变量包

转载 作者:行者123 更新时间:2023-12-02 18:33:41 36 4
gpt4 key购买 nike

C++中已经有了参数包,我可以根据参数包声明一个变量包吗?

例如,

template<typename... Args>
bool all(Args... args)
{
// Is the following definition of member_a possible?
auto const & member_a = args.a; ...
return (... (member_a.isValidState() && member_a.isStateStable()));
}

编辑

或者更复杂一点,

template<typename... Args>
bool all(Args... args)
{
// function returnCurrentOrLast can be expensive, so it's
// desired to call it once.
auto const & a = args.returnCurrentOrLast(true); ...
return (... (a.isValidState() && a.isStateStable()));
}

最佳答案

是的,您可以使用pack expansion in lambda init-capture来做到这一点。

#include <utility>

template<typename... Args>
bool all(Args... args) {
return [&...member_a = std::as_const(args.a)] {
return (... && (member_a.isValidState() && member_a.isStateStable()));
}();
}

Demo.

关于c++ - C++ 中的变量包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69097191/

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