You can sort of do it so long as the return type is a template parameter.
template<typename T>
T my_construct() { T result; return result; } template<typename T>
T my_construct() { T result; return result; }edit: you get pseudo call-by-name as a bonus.