[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 17934)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, XCF, ZIP размером до 5000 кБ.
  • Ныне 3148 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
151195732963.png-(754.49KB, 800×800, cpp_furudo_erika.png)
17934
No. 17934 watch    
Учим C++ за 21 день всем чиочаном.
Можно показывать крутой или страшный код, просить помочь с лабами и контрольными, помогать другим, а главное - много кодить.

Пополняемый список полезностей тут: https://docs.google.com/document/d/1rPPbiViiLSR2PlPnQWpZyk9Sz6-J7ucyM7HR6wvsYKk/edit?usp=sharing
24 сообщений пропущено. Показаны 50 последних сообщений Развернуть все изображения
No. 18242    
>>18237
Просто функция, которая вызывает функцию, которая вызывает функцию.
No. 18254    
https://hastebin.com/mekaqurojo.cpp
Тут какие-то игрушки с компайл-таймом.
No. 18274    
>>18254
Хастбин перестал что-то отображать у меня. Пробовал другие ссылки и с другого браузера.
No. 18300    
>>18139
Последнее - какое-то гонево в любой ОС с защитой памяти. Писать, конечно, можно попытаться куда угодно, но оно либо сразу свалится с access violation, либо умрет вместе с процессом рано или поздно.
No. 18304    
>>18300
Там скорее всего про эмбед.
No. 18305    
>>18304
За смарт-пойнтеры в эмбеде по рукам-то вам настучат сразу.
No. 18309    
>>17968
> А чем тебе позиксные треды не угодили?
Непереносимо.
No. 18316    
>>17944
вэриадик тимплитс - лучше, чем вэрарг
инишиалайзер_лист - лучше, чем пушить по-одному из С-массива
иф констэкспр - лучше, чем сфинае-лапша и ифдефы
дидакшн гайдлайнз стало больше
стало больше полезных перегрузок для STL
инлайн стэтик мэмбэрз
лэмбда-экспрешнз рулят, использую их много где

Лично мне не хватает модулей, консептся ар эджективс, рэнджес ТС и перегрузки оператора "точка".
No. 18318    
>>18316

> тимплитс
No. 18319    
>>18318
Да, перестарался.
No. 18320    
>>18305
Нет, последний квадратик про эмбедд. Ну или про что-то, что до ОС грузится.
>>18316
> перегрузки оператора "точка".
Зачем? А остальное в близжайших стандартах должны ввести.
No. 18325    
>>18320
Ну хотя бы для того, чтобы можно было биндить заново, и чтобы можно было иметь смарт-референсы.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf
No. 18330    
Почему std::async по умолчанию не или не всегда асинхронный? Я думаю, чего это у меня время выполнения как без async, а он лениво всё выполнял.
No. 18331    
>>18330
http://en.cppreference.com/w/cpp/thread/async
No. 18333    
151458163663.jpg-(383.81KB, 1561×2048, 15125000256810.jpg)
18333
>>18331
> If neither std::launch::async nor std::launch::deferred, nor any implementation-defined policy flag is set in policy, the behavior is undefined.
И почему тогда флаг необязателен?
No. 18336    
>>18333
А ты нужную перегрузку выбрал из списка?
No. 18339    
>>18336
Хм, да, но первый вариант такое же UB.
> 1) Behaves as if (2) is called with policy being std::launch::async | std::launch::deferred. In other words, f may be executed in another thread or it may be run synchronously when the resulting std::future is queried for a value.
То ли это если компилятор видит future, то откладывает до его востребования. Сипипец.
No. 18341    
>>18333
Потому что могут, очевидно же. Или дело в каких-нибудь сумасшедших трюках для самых умных, но это вряд ли.
No. 18343    
https://hastebin.com/otorurekow.cpp
Стало интересно и написал, что-то. ЧСХ, синхронный вариант быстрее из-за того, что в асинхнонном замочки юзались. Кстати говоря, почему не компилировалось, когда async вызывался как
std::async(std::launch::async, rea, ifs)
?
No. 18347    
>>18339
>UB
>If both the std::launch::async and std::launch::deferred flags are set in policy, it is up to the implementation whether to perform asynchronous execution or lazy evaluation.
Результат выполнения вэлл-дифайнд-программы не зависит от того, выполнился асинк в треде или лениво.
>И почему тогда флаг необязателен?
Видимо, потому, что авторы решили, что главное свойство асинка - не прерывать вызывающий поток, и что если флаги не указаны, то можно хоть как. Для сред выполнения с одним ядром это лучше, а остальные пусть флаг указывают.
>>18343
А параметр лист у лямбды где? Что за привычка такая - говорить, что не компилится, а дальше "ебитесь и догадывайтесь сами"? Иногда кажется, что вы специально вообще весь вывод ошибок отключаете и компилите вслепую.
http://coliru.stacked-crooked.com/a/7cef3fb3db4a115a - вот, показывай.
No. 18348    
>Для сред выполнения с одним ядром это лучше, а остальные пусть флаг указывают.
Точнее, пусть среда, знающая число ядер, сама выберет то, что лучше - ленивость для одноядерных ЦП и параллельность для многоядерных.
No. 18350    
>>18343
Может, std::ref нужен для ifs.
No. 18351    
>>18347
> А параметр лист у лямбды где?
На кой хер?
> Что за привычка такая - говорить, что не компилится.
Темплейт не дедуктится.
http://coliru.stacked-crooked.com/a/15d3b9006f4544d9 - показал.

>>18350
И правда. Спасибо, почему-то в голову самому не пришло.
No. 18360    
>>18351
>На кой хер?
Теперь понял.

Объясните мне теперь, что это за ошибка такая?
>/usr/local/include/c++/7.2.0/future:1712:5: error: no type named 'type' in 'class std::result_of<std::__cxx11::basic_string<char> (*(std::basic_ifstream<char>))(std::basic_ifstream<char>&)>'

Это функция, от стринга, возвращающая указатель на функцию, принимающую референс и возвращающую стринг. Хули он её дедуснуть не может?
http://coliru.stacked-crooked.com/a/4e17247cd426fe88
Какое отношение ссылки в аргументах имеют к result_of?
No. 18361    
>>18360
http://www.cplusplus.com/reference/fstream/ifstream/ifstream/
> (3) copy constructor (deleted)
fstream объекты не поддерживают копирование.
No. 18362    
>>18361
Копирование - это как раз без &.
No. 18365    
>>18362
Да, не посмотрел, где ошибка. Тогда так. http://coliru.stacked-crooked.com/a/b8887c7f9859e0c5 Но ты это и так знал и вопрос в том, почему так? На самом деле, понятия не имею, что это и что ты делаешь.
No. 18366    
>If the deferred flag is set (i.e. (policy & std::launch::deferred) != 0), then async converts f and args... the same way as by std::thread constructor, but does not spawn a new thread of execution. Instead, lazy evaluation is performed: the first call to a non-timed wait function on the std::future that async returned to the caller will cause the copy of f to be invoked (as an rvalue) with the copies of args...
Так, теперь понятно, почему оно не должно работать - флаг рантаймный, а в одном из вариантов происходит копирование (или в обоих).
>>18351
Да. Осталось только понять, как тип возрващаемого указателя влияет на вычислимость возвращаемого типа. Обрати внимание - я не меняю тип аргумента функции, я меняю тип аргумента функции, указатель на который возвращает функция.
>>18362
Дык там функция принимает ifstream по значению, а возвращает указатель на функцию, которая принимает по ссылке.
No. 18367    
>>18365
Не я делаю. Он берёт вывод из >>18351 и пытается понять, где ошибка. Не ясно пока, почему работает WAT3.
No. 18368    
>>18365
Он не я. Спасибо тебе огромное, до меня допёрло. То есть, аргумент для result_of - это и тип Callable и список желамых параметров в одном.
http://coliru.stacked-crooked.com/a/093a22237891f112
Тогда ещё вопрос: почему как мне сделать то же самое с, например, функцией от инт, возвращающей инт? Мне нужно написать int(int)(int), но это оказывается функцией, возвращающей функцию.
No. 18369    
Я так понимаю, что сделать это без имени типа или иного усложнения не получится.
No. 18370    
>>18368
> Мне нужно написать int(int)(int)
Нет, нужно написать int(int). Но result_of не для этого.
No. 18371    
>>18370
Так я уже пробовал до того, как допёр, и это не компилится по названой причине - должен быть коллэбл-тип и скобки со списком араетров.
No. 18434    
>>18399
Оценил.
No. 18457    
151523827912.png-(91.83KB, 1350×634, a.png)
18457
>>18399
Mistake # 21: Showing any weakness to std::async
No. 18529    
>>18457
Is it about shared_future or what? Looks perfectly normal considering RAII and absence of thread isolation.
No. 18530    
>>18529
Мне не нужен был возвращаемый результат, передаваемая функция была void, поэтому я вызывал async без future. А потом удивился, обнаружив последовательное выполнение.
No. 18532    
>>18530
Вот не вижу ничего удивительного в этом, ведь завершение async-функции - это тоже результат. Если тебе нужен detached thread, то тебе нужен detached thread.
No. 18635    
>>18457
В первом параграфе говорится о shared_future? Как могут несколько future относится к одному shared state?
No. 18636    
https://hastebin.com/conuvaxiyi.cpp
Попросили сделать реализацию алгоритма Прима. Вроде даже не совсем говнокод.
No. 18761    
Бампну ради великого правосудия.
No. 18836    
https://solarianprogrammer.com/2017/12/27/cpp-17-constexpr-everything-as-much-as-the-compiler-can/
Что-то я не понимаю этого. Зачем именно everything? Это же вредит читаемости кода. Почему нельзя констэксприть только очень важные для производительности части кода?
No. 18837    
>>18836
Как вредит? Вредить разве что компайл тайму может.
No. 18843    
>>18837
Вредит таким образом, что нужно код переписывать в соответствии с требованиями constexpr.
No. 18844    
>>18843
Н-е совсем. Скоро сделают, что можно будет действительно везде приписывать, как инлайн, например, а компилятор будет решать. Ну, а если тебе вправду нужно, чтоб функция на компайл тайме считалась, то перепишешь. Компилятор умный, так что это совсем не сложно.
Вообще, не очень понял твоё высказывание. Никто же тебя не заставляет переносить всё в компайл тайм, ну.
No. 18853    
>>18844
>Никто же тебя не заставляет переносить всё в компайл тайм, ну.
Я уже в нескольких местах видел такое предложение. Ясен хер, меня не заставляют, но мотивы этих людей мне непонятны (они шутят?).
No. 19004    
Поясните за скрипты линкера. Кто-то писал?
No. 19017    
>>19004
Пояснился. Осознал, что ничего не знаю, стал плакать в подушку.
Удалить сообщение []
Пароль  
[Mod]