|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Нашёл тут статью про лямбды. Вот пример кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Автор утверждает, что "std::pair" будет копироваться в лямбду, передаваться по значению. Я проверил, вроде бы это так. Но почему ведь "std::pair" передаётся по ссылке? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 15:51 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Потому что итератор для map<K, V> "выдаёт" pair<const K, V>. Наверняка в статье про это написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 15:53 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
a guest Потому что итератор для map<K, V> "выдаёт" pair<const K, V>. Наверняка в статье про это написано. Да написано, я как-то пропустил следующую строчку. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 15:56 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
petravНо почему ведь "std::pair" передаётся по ссылке? Но тип ключа у него отличается от numbers. Каждый раз создаётся временный объект, который и передаётся по ссылке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 15:56 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Но в таком случае у "pair" должен быть оператор неявного преобразования типа: "pair<const K, V> ---> pair<K, V>". Иначе оно же не компилировалось бы? Что могло сподвигнуть написать такой оператор? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 16:07 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
petravНо в таком случае у "pair" должен быть оператор неявного преобразования типа: "pair<const K, V> ---> pair<K, V>". Да. И это автогенерируемый copy constructor. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 17:39 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravНо в таком случае у "pair" должен быть оператор неявного преобразования типа: "pair<const K, V> ---> pair<K, V>". Да. И это автогенерируемый copy constructor. Здесь копи конструктор? :) А почему не компилируется тогда? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 18:18 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravНо в таком случае у "pair" должен быть оператор неявного преобразования типа: "pair<const K, V> ---> pair<K, V>". Да. И это автогенерируемый copy constructor. 🤦♂️ ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 18:26 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
petrav А почему не компилируется тогда? Вы код std::pair откройте, чтобы не думали что там что-то такое же тривиальное ))) А преобразующий конструктор скорее всего таки есть. Но не автогенерируемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 19:25 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
petrav, Пишите Код: plaintext 1.
Зря что ли люди старались, в язык добавляли. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 19:39 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav А почему не компилируется тогда? Вы код std::pair откройте, чтобы не думали что там что-то такое же тривиальное ))) А я не открываю потому что знаю что там крайне нетривиально. И с наскока я не разберусь. Anatoly Moskovsky А преобразующий конструктор скорее всего таки есть. Но не автогенерируемый. Я про механизм преобразования. Просто интересно. Это или оператор преобразования типа… Или, да, конструктор преобразования, но не копирования и уж тем более не автогенерённый. Или это набор перегруженных функций для преобразования, которые явно там вызываются. Меня удивляет зачем они это делают? Там само собой такое преобразование не сработает. Человек в аргументах лямбды написал ссылку и получил передачу аргумента, не по ссылке, а по значению. Ну просто слов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2020, 19:47 |
|
Лямбды, for_each и т.д.
|
|||
---|---|---|---|
#18+
petrav А почему не компилируется тогда? Используй специализацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2020, 09:21 |
|
|
start [/forum/topic.php?fid=57&msg=39991758&tid=2017355]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 249ms |
total: | 528ms |
0 / 0 |