Size: a a a

cxx.Дискуссионная

2020 April 19

RM

Roy Mustang in cxx.Дискуссионная
Тогда получается если мы хотим передавать lvalue объект, то так?
int val = 54;
decltype(auto) wtf = std::forward<int&>(val);
источник

RM

Roy Mustang in cxx.Дискуссионная
Не совсем так, я хочу понять, должен ли я обращаться к auto через decltype чтоб получить то что действительно возвращает forward?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Я тут решил поиграть с форвардом, если сделать так
auto wtf = std::forward<int>(10);
То wtf будет типом int, но разве это правильно? У нас auto - это нечто похоже на универсальную ссылку исходя из того что я прочитал в Мейерсе, это означает, что auto так же усекает амперсанты, означает ли это что правильным решением тут будет
decltype(auto) wtf = std::forward<int>(10) ?
Зависит от того, что ты хочешь, для начала...
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Зависит от того, что ты хочешь, для начала...
Я хочу понять, что я должен получить от std::forward
источник

RM

Roy Mustang in cxx.Дискуссионная
или это зависит от контекста использования?
источник

А

Андрей in cxx.Дискуссионная
может оно тебе не нужно ?
источник

А

Андрей in cxx.Дискуссионная
может это вообще не твое?
источник

RM

Roy Mustang in cxx.Дискуссионная
Андрей
может это вообще не твое?
Ну не всем знания одинаково даются
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Я хочу понять, что я должен получить от std::forward
Ты для начала объясни, что ты хочешь от auto wtf = ...
источник

O

Ofee in cxx.Дискуссионная
Ofee
Ты для начала объясни, что ты хочешь от auto wtf = ...
А там, может, и ответ сам собой найдётся...
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Ты для начала объясни, что ты хочешь от auto wtf = ...
К примеру, я в template шаблоне хочу получить тип того, что ранее передал туда, таким образом я должен вызвать std::forward<T> (t), так?
источник

RM

Roy Mustang in cxx.Дискуссионная
В общем-то, я хочу узнать, как получить оригинальный тип из T в шаблонном методе, но при этом, как правильно его в auto передать
источник

RM

Roy Mustang in cxx.Дискуссионная
Если учесть что шаблонный метод может вызываться как с rvalue передачей, так и с lvalue, то это означает что я должен использовать auto&& wtf = std::forward<T>(t) для выведения типов
источник

RM

Roy Mustang in cxx.Дискуссионная
а использовать auto wtf - это все равно что создать копию объекта
источник

O

Ofee in cxx.Дискуссионная
Честное слово, не понимаю, чего ты от меня хочешь и в каком контексте... Я слишком сонный... нужно было вчера идти спать...
источник

RM

Roy Mustang in cxx.Дискуссионная
Я имею в виду, что независимо от того что мы используем std::forward, мы должны обращаться с lvalue или rvalue объектом через rvalue ссылку
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
а использовать auto wtf - это все равно что создать копию объекта
Или смувать в объект
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Я имею в виду, что независимо от того что мы используем std::forward, мы должны обращаться с lvalue или rvalue объектом через rvalue ссылку
Мне не очень нравится "rvalue ссылка" в данном контексте, скорее уж, universal или perfect reference
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Мне не очень нравится "rvalue ссылка" в данном контексте, скорее уж, universal или perfect reference
Ну это же не будет универсальной ссылкой в контексте с использованием std::forward
источник

RM

Roy Mustang in cxx.Дискуссионная
std::forward разве не всегда возвращает rvalue ссылку на объект?
источник