Я использовал CPP Insight для проверки примера, включающего DeckType и volatile с помощью следующей функции.
decltype(auto) triple(volatile int &f) {
f *= 3;
return f;
}
< /code>
Insight превратил функцию в следующую функцию < /p>
volatile int & triple(volatile int & f)
{
f = static_cast(f * 3);
return f;
}
Почему static_cast ? Результатом f * 3 является временный и static_cast не влияет.volatile int & triple(volatile int & f)
{
f = f * 3;
return f;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... o-volatile