When clang a constructor invocation where there are single-argument
constructors that take either std::optional or some other type the
checks in _CheckOptionalArgsConstructor fail becaues that helper tries
(and fails) to take an rvalue-reference to void.
A simple example is here: https://godbolt.org/z/bPdzYfcnv
This works just fine with other C++ standard library implementations.
This change uses std::add_rvalue_reference_t<T> rather than T&& to avoid
the compilation error.
This fixes bug https://github.com/llvm/llvm-project/issues/61692 and
maybe https://github.com/llvm/llvm-project/issues/48959.
Please don't use using in the tests.