Можно ли объявить переменную var_b
того же типа, что и другая переменная, var_a
?Определить переменную b того же типа, что и переменная a
Например:
template <class T>
void foo(T t) {
auto var_a = bar(t);
//make var_b of the same type as var_a
}
F_1 bar(T_1 t) {
}
F_2 bar(T_2 t) {
}
может быть стоит упомянуть, что decltype() дает вам тип * exact *. В этом примере, если var_a является ссылкой, b не будет по умолчанию конструктивным и не удастся для компиляции. Очевидно, что это может иметь место и для любого определенного пользователем типа. – Arvid
Вы можете обойти ссылочную проблему с помощью ['std :: remove_reference'] (http://en.cppreference.com/w/cpp/types/remove_reference): 'std :: remove_reference :: type b; ' –
Mego