const&?
const auto a = s(); auto b = s(); s(a); // calls s::s(const s&) s(b); // calls s::s(s&)
Понимаю, но они по сути делают одно и то же, если написать = default?
Просто без конструктора S(S&) для неконстантной lvalue ссылки твой конструктор с вариадиками будет лучше матчиться, так как он примет S& вместо const S& в copy ctor
Вообще, шаблонные конструкторы без дополнительных ограничений (sfinae / requires), особенно принимающие universal reference довольно опасны Нужно ограничивать / добавлять теги первым параметром
Обсуждают сегодня