Какой из них правильный и почему?
Я думаю, что это первый, потому что Ts
уже имеет &&
или const &
, связанный с типом, но мне нравится быть уверенным, и на самом деле примеров такого конкретного случая noexcept
не так уж много. .
template <typename T>
struct Test {
T test;
// A
template <typename... Ts>
Test(Ts &&... ts) noexcept(std::is_nothrow_constructible_v<T, Ts...>)
: test(std::forward<Ts>(ts)...) {
}
// B
template <typename... Ts>
Test(Ts &&... ts) noexcept(std::is_nothrow_constructible_v<T, Ts &&...>)
: test(std::forward<Ts>(ts)...) {
}
};