Пишу шаблон для хз чего, но оно умеет притворится указателем (на самом деле это QSharedPointer, но не обязательно), по которому есть методы join() и value.getPayload.
Какой payload будет — это и проблема.
Начал писать:
Проблема тупая, конечно — привык, что плюсики по рукам постоянно бьют, вот и боялся тупо попробовать. А оно — работает (и я на самом деле просто только чуть-чуть интуитивно понимаю как). Современные плюсики — охрененные
Здравствуйте, Marty, Вы писали:
M>Здравствуйте!
M>Пишу шаблон для хз чего, но оно умеет притворится указателем (на самом деле это QSharedPointer, но не обязательно), по которому есть методы join() и getPayload. M>Какой payload будет — это и проблема. M>Начал писать: M>
Здравствуйте, Marty, Вы писали:
M>ЗЫ Современные плюсики совсем плохо знаю, ага
Да я как-то тоже, только вот старый проект когда ковыряю да видео если какое на ютубе попадется
Сначала запостил, потом обновил страницу, увидел что ты уже сам написал.
Re[2]: Чёт не рублю в современном C++, поможите, кто может
А какая версия С++ используется? Разве начиная с С++14 не должно работать без trailing return type (так вроде -> называется)? Еще в книгах пишут, что если метод getPayload возвращает ссылочный тип, то это может быть не то, что вы хотите. Поэтому рекомендуют делать низведение
auto joinAndGetPayload( ResponseType response )-> typename std::decay<decltype(response->value.getPayload())>::type
Сейчас придут монстры типа RG45 и watchmaker и расскажут нам как делать правильно
Вопрос, что именно нужно. В C++ нужно всегда уточнять.
Если требуется прокинуть как есть, то лучше использовать decltype(auto).
В отличии от auto это вернёт ссылку если getPayload возвращает ссылку.
int i;
int& g() { return i; }
decltype(auto) f() { return g(); }
auto f2() { return g(); }
f() = 1; // Работает
g2() = 1; // А так нет
Кстати, есть причина передавать response не по ссылке ?
Получается, что мы работаем с копией объекта.
Здравствуйте, _NN_, Вы писали:
_NN>Вопрос, что именно нужно. В C++ нужно всегда уточнять. _NN>Если требуется прокинуть как есть, то лучше использовать decltype(auto). _NN>В отличии от auto это вернёт ссылку если getPayload возвращает ссылку.
спс
_NN>Кстати, есть причина передавать response не по ссылке ? _NN>Получается, что мы работаем с копией объекта.
Да наверное нет, но тогда надо озаботиться, чтобы возвращалась не ссылка, потому что в 99.9999% случаев там аргументом будет результат другого непосредственного вызова