Como disponibilizar a `avaliação de curto-circuito` em` expressões de dobra`?

#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!
}

O tradicional&& operador suportaavaliação de curto-circuito, tãofalse && (*pb = true) ficará bem em tempo de execução, mas os dois casos a seguir não.

Como fazeravaliação de curto-circuito também disponível emfold expressions?

questionAnswers(1)

yourAnswerToTheQuestion