Исправление Siborgium, (текущая версия) :
В С++ ты мог бы сделать и полиморфную статик функцию.
Да, но ей все равно придется форвардить аргументы конструктору – или конструировать по умолчанию, а затем вручную конструировать отдельные поля из аргументов. Уже тут начнутся проблемы – не все, что MoveConstructible, является MoveAssignable, и так далее.
Проблема возврата Result все равно остается и в общем случае не решается, придется либо затирать типы, либо использовать развесистые variant’ы с ошибками.
Наконец, избегать исключений ради избегания исключений смысла нет.
Если договорится что это теперь везде используется вместо конструкторов.
В Gtkmm так и делают (не везде, впрочем), и лазить по докам в поисках нужной статической функции довольно неприятно. Справедливости ради, полиморфизмом там и не пахнет.
Исправление Siborgium, :
В С++ ты мог бы сделать и полиморфную статик функцию.
Да, но ей все равно придется форвардить аргументы конструктору – или конструировать по умолчанию, а затем вручную конструировать отдельные поля из аргументов. Уже тут начнутся проблемы – не все, что MoveConstructible, является MoveAssignable, и так далее.
Проблема возврата Result все равно остается и в общем случае не решается, придется либо затирать типы, либо использовать развесистые variant’ы с ошибками.
Наконец, избегать исключений ради избегания исключений смысла нет.
Если договорится что это теперь везде используется вместо конструкторов.
В Gtkmm так и делают (не везде, впрочем), и лазить по докам в поисках нужной статической функции довольно неприятно.
Исправление Siborgium, :
В С++ ты мог бы сделать и полиморфную статик функцию.
Да, но ей все равно придется форвардить аргументы конструктору – или конструировать по умолчанию, а затем вручную конструировать отдельные поля из аргументов. Уже тут начнутся проблемы – не все, что MoveConstructible, является MoveAssignable. Проблема возврата Result все равно остается и в общем случае не решается, придется либо затирать типы, либо использовать развесистые variant’ы с ошибками.
Если договорится что это теперь везде используется вместо конструкторов.
В Gtkmm так и делают (не везде, впрочем), и лазить по докам в поисках нужной статической функции довольно неприятно.
Исправление Siborgium, :
В С++ ты мог бы сделать и полиморфную статик функцию.
Да, но ей все равно придется форвардить аргументы конструктору – или задавать вручную. Проблема возврата Result все равно остается и в общем случае не решается, придется либо затирать типы, либо использовать развесистые variant’ы с ошибками.
Если договорится что это теперь везде используется вместо конструкторов.
В Gtkmm так и делают (не везде, впрочем), и лазить по докам в поисках нужной статической функции довольно неприятно.
Исходная версия Siborgium, :
В С++ ты мог бы сделать и полиморфную статик функцию.
Да, но ей все равно придется форвардить аргументы конструктору – или задавать вручную. Проблема возврата Result все равно остается и в общем случае не решается, придется либо затирать типы, либо использовать развесистые variant’ы с ошибками.
Если договорится что это теперь везде используется вместо конструкторов.
Мог бы. В Gtkmm так и делают, и лазить по докам в поисках нужной статической функции довольно неприятно.