Page Summary
levgem.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
yauheni akhotnikau - (no subject)
thedeemon.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
yauheni akhotnikau - (no subject)
thedeemon.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
develop7 - (no subject)
yauheni akhotnikau - (no subject)
zeit-raffer.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
theiced.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
sasha-gil.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
zeit-raffer.livejournal.com - (no subject)
yauheni akhotnikau - (no subject)
zeit-raffer.livejournal.com - (no subject)
zeit-raffer.livejournal.com - (no subject)
nivanych.livejournal.com - (no subject)
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2015-10-16 06:40 am (UTC)no subject
Date: 2015-10-16 06:52 am (UTC)no subject
Date: 2015-10-16 07:00 am (UTC)no subject
Date: 2015-10-16 07:02 am (UTC)no subject
Date: 2015-10-16 07:07 am (UTC)no subject
Date: 2015-10-16 07:09 am (UTC)Ничего про него не знаю, "есличо".
no subject
Date: 2015-10-16 07:10 am (UTC)Много, чему там можно поражаться ;-)
no subject
Date: 2015-10-16 07:12 am (UTC)no subject
Date: 2015-10-16 07:18 am (UTC)Вообще, этому приему уже лет двадцать, наверное. Он точно доступен с C++98. Смысл в том, что если есть произвольный поддиапазон [a,b), то его содержимое можно отправить в cout посредством поэлементного копирования, где вместо "приемника" задается не непосредственно cout, а завязанный на cout итератор.
В принципе, любой может написать для себя шаблон writeln, который будет получать аргументом [a,b) и прятать copy у себя внутри. Но в стандартной библиотеке такой функции нет.
no subject
Date: 2015-10-16 07:26 am (UTC)И для многих других тоже автоматически работает (всех структур, например).
no subject
Date: 2015-10-16 07:33 am (UTC)no subject
Date: 2015-10-16 07:41 am (UTC)no subject
Date: 2015-10-16 07:57 am (UTC)Во-вторых, маросы -- это вы с C или Rust-ом перепутали. В C++ есть шаблоны, на которых благопристойный writeln пишется с полпинка. Только вот, как показывает история, в стандарте он пока никому не понадобился.
no subject
Date: 2015-10-16 08:20 am (UTC)no subject
Date: 2015-10-16 08:21 am (UTC)А про гипотетические новые красивые приёмы! ;-)
no subject
Date: 2015-10-16 08:24 am (UTC)no subject
Date: 2015-10-16 08:30 am (UTC)no subject
Date: 2015-10-16 08:32 am (UTC)no subject
Date: 2015-10-16 08:33 am (UTC)for (auto&& a: xs) std::cout << a;
std::cout << std::endl;
ну не мега-красиво, но всё же более читабельно; '&&' это пижонство, в простых случаях ненужное (но полезное, если тип xs в этом месте не вполне ясен)
no subject
Date: 2015-10-16 08:34 am (UTC)no subject
Date: 2015-10-16 08:44 am (UTC)Конечно, такой подход приводит к другому ужасу - у классов в стандартной библиотеке может быть по тысяче методов, если мы пытаемся засунуть туда все подобное...
no subject
Date: 2015-10-16 08:49 am (UTC)Ничего не мешает сделать для типа file_mapped_memory (экземпляр которого и понимается под xs) определить свой собственный operator<<. И было бы как раз так, как вы бы хотели: cout << x.
А уже внутри этого operator<< могло быть как использование std::copy, так и что-то другое, более эффективное.
Только для нужд конкретного мелкого примера делать operator<< для file_mapped_memory смысла не было.
Тем не менее, вопрос не снят: вы действительно считаете, что в стандарте C++ должен быть operator<< для любого пользовательского типа?
no subject
Date: 2015-10-16 08:52 am (UTC)no subject
Date: 2015-10-16 09:00 am (UTC)А для типа с begin и end.
А Вы так не считаете?
Людям, далеким от идиоматики С++, сама идея везде, где мы пользуемся списком (или чем-то, похожим на список), дописывать begin и end, - кажется странной. Есть такой термин "синтаксический мусор".
no subject
Date: 2015-10-16 09:12 am (UTC)