Но на самом деле главное в том, что вычисление аргумента функции предшествует телу функции, и проблема не в самом выражении сгиба.

#include <type_traits>

#define FORWARD(arg)\
std::forward<decltype(arg)>(arg)

template<typename... Args>
constexpr bool AndL(Args&&... args)
{
    return (... && FORWARD(args));
}

template<typename... Args>
constexpr bool AndR(Args&&... args)
{
    return (FORWARD(args) && ...);
}

int main()
{
    bool* pb = nullptr;

    false && (*pb = true);       // ok at runtime.
    AndL(false, (*pb = true));  // error at runtime!
    AndR(false, (*pb = true));  // error at runtime!
}

ционный&& оператор поддерживаетоценка короткого замыкания, такfalse && (*pb = true) будет хорошо во время выполнения, но следующие два случая - нет.

Как сделатьоценка короткого замыкания также доступно вfold expressions?

Ответы на вопрос(1)

Ваш ответ на вопрос