Рассмотрим следующий код:
template<typename T> void foo(T&& some_struct)
{
bar(std::forward</* what to put here? */>(some_struct.member));
}
В случае пересылки всей структуры я бы сделал std::forward<T>(some_struct)
. Но как получить правильный тип при пересылке члена?
У меня была идея использовать decltype(some_struct.member)
, но, похоже, это всегда приводит к базовому типу этого члена (как определено в определении структуры).