Конструктор и оператор перемещения обязательно
Помнится были траблы с ликом памяти при эксепшене брошеном из конструктора
вроде деструктор обьекта не вызывался (поскольку обьект ещё недосоздан) и все переменные для которых дополнительно выделялась память оставались висеть в памяти
не знаю насколько это актуально сейчас, ничто не мешает сделать статик метод со всеми проверками внутри или некую фактори, если эта логика прям так нужна
Пы. Сы.
Подскажите насколько это актуально и чё за магия творится при непойманном эксепшене из коструктора)