Возврат тип как `auto &&` или как `decktype (auto)`C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Возврат тип как `auto &&` или как `decktype (auto)`

Сообщение Anonymous »

Допустим, что std :: vector удовлетворяет концепции Densevector и

Код: Выделить всё

struct shifted_vector
{
size_t offset;
std::vector vec;
};
Удовлетворяет концепцию сдвига .
Я думал, что следующие типы возврата являются неправильными, а Decltype (auto) является правильным. Но более поздняя сбоя моей программы тестирования, а первая - нет. Вероятно, в некоторых случаях более позднее перемещение семантики, но сначала нет. < /P>

Код: Выделить всё

/// Get the vector part of a dense vector (it is the vector itself).
template requires(ForwardDenseVector)
constexpr auto &&vec(T &&v) noexcept { return std::forward(v); } // NEVER decltype(auto)
/// Get the vector part of a shifted vector (it is the \a vec field).
template requires(ShiftedVector)
constexpr auto &&vec(T &&v) noexcept { return std::forward(v).vec; } // NEVER decltype(auto)
Почему это происходит?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... cltypeauto
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»