Я так не думаю, потому что у конструкторов нет имен, вы не можете взять указатель / ссылку на них, и вообще они не ведут себя как функции.
You может использовать лямбда для инициализации std::function
с той же сигнатурой:
const std::function<T()> func = [](void) { return T(); } // or something like that
Вызов вызывает тот же результат, что и выражение T()
для создания временного типа T
, но, возможно, с различными побочными эффектами. В случае вызова истинной функции в операторе return есть дополнительное временное выражение, которое номинально копируется / перемещается в возвращаемое значение. Реализация может или не может стать дополнительной временной.