@ProCxx

Страница 2144 из 2477
Denis
20.06.2018
06:04:59
смотреть с какими данными работаешь и как

Oleg
20.06.2018
06:05:22
void LinksBagManager::updatePublishDate(const QString& id, const QString& date) { m_BookmarksModel->UpdatePublishDate(id, date); m_BookmarksModel->RefreshBookmark(id); }

Denis
20.06.2018
06:05:23
если ты можешь гарантировать что только чтение-чтение или вообще не используешь данных, используемых первым - то все ок

Oleg
20.06.2018
06:06:23
значит надо заниматься синхронизацией.

Google
Oleg
20.06.2018
06:06:27
ясно. Спасибо

Denis
20.06.2018
06:06:36
ну тут ничего не понять. Это на самом деле не тот вопрос, на который можно ответить глядя только на метод, если он использует хоть какие-то данные

Oleg
20.06.2018
06:07:15
если что-то модифицируется, то лучше синхронизировать, верно?

Denis
20.06.2018
06:07:26
тип того

Oleg
20.06.2018
06:09:55
что-то мне кажется, что я делаю что-то не так

Vyacheslav
20.06.2018
06:17:28
если что-то модифицируется, то лучше синхронизировать, верно?
Причём, если что-то модифицируется в любом из потоков после создания второго потока, и потом может быть прочитано. Для этого атомики ещё могут подойти.

Oleg
20.06.2018
06:17:52
это-то понятно

Vyacheslav
20.06.2018
06:18:42
ну, теперь можно как-то так не приходя в сознание наговнокодить: https://gist.github.com/valexey/99801fa959c570e4c235be423ccfbfe6
Кстати, есть ли способ убедиться, что функция действительно выполнилась во время компиляции, а не выполняется во время выполнения?

Vyacheslav
20.06.2018
07:40:49
static assert?
Идея хорошая, а как проверить без контроля результата?

Google
Evgeniy
20.06.2018
07:41:22
Vyacheslav
20.06.2018
07:42:20
О! Протягивать результат через шаблонную переменную! Гениально

Для результата-структуры только не уверен, будет ли работать

Ilia
20.06.2018
07:44:35
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ ??
Эту. Великолепная книга. Причём, она НЕ ТОЛЬКО по С++, как ни странно. Ещё можно Грегори Эндрюс, основы многопоточного, параллельного и распределённого программирования. https://github.com/dprotopopov/LaplaceEquation/blob/master/%D0%AD%D0%BD%D0%B4%D1%80%D1%8E%D1%81%20%D0%93.%D0%A0.%20%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE%2C%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B8%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.djvu Но эта книга чуть более тяжеловесная и не по С++ совсем.

Vyacheslav
20.06.2018
07:45:34
пилим костыли с С++98 (с)
Если бы был вариант сделать, чтобы компиляция падала в случае не-constexpr вызова, то их пилить бы не пришлось.

Aidar
20.06.2018
07:47:32
Разве не просто сунуть в constexpr переменную результат?

Со стороны функции да никак

Ilia
20.06.2018
07:48:18
Если бы был вариант сделать, чтобы компиляция падала в случае не-constexpr вызова, то их пилить бы не пришлось.
Блин, константу глобальную проинициализируй результатом функци, и всё.

Spoonson
20.06.2018
07:48:21
есть пропозал (или предложения) по поводу in_constexpr https://github.com/SaadAhmad/in_constexpr

Vyacheslav
20.06.2018
07:48:29
Разве не просто сунуть в constexpr переменную результат?
На каждый вызов функции создавать свою переменную? Такое...

Vyacheslav
20.06.2018
07:49:55
Чё это?
Это если мне constexpr функцию много раз нужно дергать во время компиляции и с разными параметрами.

В любом случае спасибо за подсказки.

Vyacheslav
20.06.2018
07:51:00
Вызывалось так: __getshortfn(__FILE__)
^ как пример. Если использовать в макросе, создавать переменную негде.

Vhäldemar
20.06.2018
07:52:18
почему негде?

в своём скопе создавай

Google
Aidar
20.06.2018
07:53:04
Блин засунь в шаблон

Это из constexpr ты не можешь пропихнуть в параметр шаблона, но наоборот то можно

Ilia
20.06.2018
07:57:32
На каждый вызов функции создавать свою переменную? Такое...
Ты же ПРОВЕРИТЬ хотел, нет? Можно и только одну переменную создать, а потом полагать, что все остальные вызовы будут обработаны аналогично. Потом, можно и массив констант создать...

Igor
20.06.2018
08:34:18
Антон, а где об этом написано? Local class имеет определенное значение. А это что?
Это elaborated type specifier - https://en.cppreference.com/w/cpp/language/elaborated_type_specifier

Anatoly
20.06.2018
08:36:09
Это elaborated type specifier - https://en.cppreference.com/w/cpp/language/elaborated_type_specifier
То есть в данном примере от Антона struct some_alias не более чем объявление incomplete типа some_alias, как тега.

Oleg
20.06.2018
09:44:39
я, конечно, хз, но на моем проекте clang code model из критора, работает хуже, чем стандартный парсер

Oleg
20.06.2018
09:51:27
угу

Vyacheslav
20.06.2018
10:07:01
Ты же ПРОВЕРИТЬ хотел, нет? Можно и только одну переменную создать, а потом полагать, что все остальные вызовы будут обработаны аналогично. Потом, можно и массив констант создать...
А разве не каждый вызов нужно проверять? Если, например, результат одного constexpr передаётся в другой. При усложнении можно нарваться на пропущенные не-constexpr функции.

Vyacheslav
20.06.2018
10:10:46
Производительность важна, да.

Antony
20.06.2018
10:11:23
Anatoly
20.06.2018
10:12:21
@antoshkka Антон, Игорь дал ссылку

Это elaborated type specifier - https://en.cppreference.com/w/cpp/language/elaborated_type_specifier

Antony
20.06.2018
10:12:28
Это будет в c++20. Зовётся constexpr!
Там много плюшее, подробнее опишу в посте на хабр

Kirill
20.06.2018
10:13:56
Google
Alexander
20.06.2018
10:14:10
Это будет в c++20. Зовётся constexpr!
это всё таки приняли? ужос то какой

Kirill
20.06.2018
10:15:14
Anatoly
20.06.2018
10:15:22
Alexander
20.06.2018
10:15:37
почему ужос?
никто не мешал сделать таким constexpr изначально

а теперь опомнились и сделали как надо. НО с другим синтаксисом.

Kirill
20.06.2018
10:15:59
никто не мешал сделать таким constexpr изначально
да, этого не хватало, НО никто не мешал сделать поддерждку if внутри констекспра изначально)

а не тернарные операторы и боль

это то из чего состояли констекспр функции в С++11

из боли на 80% из тренарных операторов на 20%

Admin
ERROR: S client not available

Antony
20.06.2018
10:19:34
а теперь опомнились и сделали как надо. НО с другим синтаксисом.
Эх... если бы можно было бац - и C++ сразу со всеми фишками максимально продуманными

Alexander
20.06.2018
10:19:53
не-не-не, не надо переводить разговор в эту сторону

надо признать - с constexpr откровенно проебались

Antony
20.06.2018
10:20:39
Имхо наоборот - плавно движемся в сторону максимальной функциональности

Kirill
20.06.2018
10:21:18
надо признать - с constexpr откровенно проебались
и проебались и сделали очень круто одновременно проеб в плане отсутствия гарантий кроме как присваивание констекспр переменной результата это фейл НО компайл тайм вычислания стали адекватными это однозначно хорошо

Alexander
20.06.2018
10:21:49
никто не мешал сделать constexpr как constexpr!

Antony
20.06.2018
10:22:15
никто не мешал сделать constexpr как constexpr!
Тогда пришлось бы дублировать функции

Alexander
20.06.2018
10:22:38
почему?

Antony
20.06.2018
10:24:10
Потому что сейчас сonstexpr метод можно звать как на ратнайме, так и в компайл тайме. Если форсировать выполнение в компайл тайме только, то придется дублировать методы, и один писсть без constexpr

Google
Antony
20.06.2018
10:24:31
Так что всё правильно сделали

Взять бы и переписать стандарт, да?
Только iosteams и locales. В остальном не напортачили :)

A.D.
20.06.2018
10:25:40
а почему '!' вместо нового keyword'а?

Vyacheslav
20.06.2018
10:25:51
Я бы не сказал, что стримы уж настолько плохи.

Antony
20.06.2018
10:26:23
Я бы не сказал, что стримы уж настолько плохи.
А это новый кейворд :) пробел перед восклицательным знаком поставить нельзя :)

а почему '!' вместо нового keyword'а?
А это новый кейворд :) пробел перед восклицательным знаком поставить нельзя :)

A.D.
20.06.2018
10:27:24
формально - да. визуально - другое дело

или в виде аттрибута

Matwey
20.06.2018
10:44:13
Господа, я обнаружил, что не умею пользоваться std::vector

Evgeny
20.06.2018
10:44:38
лол

Matwey
20.06.2018
10:44:42
Как мне его ресайзнуть не инициализируя содержимое (хранится float)? Или пользоваться reserve() capacity()?

Andrei
20.06.2018
10:45:09
reserve

Matwey
20.06.2018
10:46:20
Мне кажется, что reserve не для этого предназначался исходно :(

Konstantin
20.06.2018
10:48:32
после reserve ты не сможешь к его элементам обращаться, так что только через свой аллокатор

Matwey
20.06.2018
10:50:20
И на самом деле через vec[n] тоже смогу

Konstantin
20.06.2018
10:50:21
аксессоры контролируют размер а не капасити если не ошибаюсь и кидают out of range

Matwey
20.06.2018
10:50:26
А вот через vec.at(n) не смогу

at() кидает исключения, остальные ничего не контролируют

Konstantin
20.06.2018
10:50:54
ну и соответсвенно сунуть его в алгоритмы и нормально обработать не сможешь

Страница 2144 из 2477