Спінінг на заключне питання, "як я перетворять на тип Test::A
", а не жорсткий щодо вимоги мати акторський склад там, і відповідати на кілька років із запізненням, просто це, здається, є популярним питанням, ніхто, схоже, не згадував альтернативу , за стандартом C ++ 11:
5.2.9 Статичний склад
... вираз e
може бути явно перетворений у тип з T
використанням static_cast
форми, static_cast<T>(e)
якщо декларація
T t(e);
добре сформована, для деякої винайденої тимчасової змінної t
(8.5). Ефект такого явного перетворення такий же, як виконання декларації та ініціалізації, а потім використання тимчасової змінної як результат перетворення.
Тому безпосередньо використовувати форму t(e)
також буде добре, і ви можете віддати перевагу їй за акуратність:
auto result = Test(a);