170 похожих чатов

Отследить что куда то сохраняется указатель на функцию который может

быть использован в другой функции которая никогда не вызывается?

23 ответов

26 просмотров

Тут сильнее набросили, у людей оказывается бывают функторы с разными const() и () а через function нельзя вызвать const()

Dmitry-Sokolov Автор вопроса
Aidar Fattakhov
Тут сильнее набросили, у людей оказывается бывают ...

Да, это изначальная хрень в std function. Я в своей реализации сохраняю const

Dmitry-Sokolov Автор вопроса
Kelbon
наоборот можно всегда

Да, проблема что можно всегда

Dmitry Sokolov
Да, это изначальная хрень в std function. Я в свое...

А вроде можно, не? Только другой тип надо указать

Dmitry-Sokolov Автор вопроса
disba1ancer
А вроде можно, не? Только другой тип надо указать

Там оператор const хотя callable может быть mutable. То есть const независимо от сигнатуры () или () const.

Dmitry Sokolov
Там оператор const хотя callable может быть mutabl...

в общем походу я из этой дискуссии ничего не понял, впрочем и читал по диагонали, так забью пока на это

Dmitry-Sokolov Автор вопроса
disba1ancer
в общем походу я из этой дискуссии ничего не понял...

Помнятся претензии что это приводит к тому что вызов const метода function нарушает std гарантии отсутствия гонок. Был когда то proposal на поддержку qualified сигнатур, p0045r1.

Dmitry-Sokolov Автор вопроса
disba1ancer
а что там за гарантии такие?

[res.on.data.races]/p3, A C++ standard library function shall not directly or indirectly modify objects accessible by threads other than the current thread unless the objects are accessed directly or indirectly via the function's non-const arguments, including this".

Dmitry Sokolov
[res.on.data.races]/p3, A C++ standard library fun...

странноватая гарантия, имхо, избыточная, но из текста не всё ясно...

Vlad
https://youtu.be/xTdeZ4MxbKo?t=2636

на англ не слушаю, не могу распарсить...

disba1ancer
на англ не слушаю, не могу распарсить...

автоматически сгенерированные субтитры норм

Dmitry-Sokolov Автор вопроса
disba1ancer
странноватая гарантия, имхо, избыточная, но из тек...

Ну какие-то объекты могут иметь скрытое мутабельное состояние, например lazy evaluated. Логически это может быть const, но при этом непотокобезопасно. А это гарантия того, что такого состояния не должно быть и объекты std либы через const методы можно использовать конкурентно.

Dmitry Sokolov
Ну какие-то объекты могут иметь скрытое мутабельно...

ну если имеется ввиду то, что надо все мутаблы надо мутексами обкладывать, это справедливо

Dmitry-Sokolov Автор вопроса
disba1ancer
ну если имеется ввиду то, что надо все мутаблы над...

Нет же, имеется в виду что const не надо мьютексами обкладывать :)

Dmitry Sokolov
Нет же, имеется в виду что const не надо мьютексам...

а как же если объект const, а у него внутри mutable поле?

Dmitry-Sokolov Автор вопроса
disba1ancer
а как же если объект const, а у него внутри mutabl...

Это std, неведомо нам чо mutable есть там

Dmitry Sokolov
Это std, неведомо нам чо mutable есть там

а на случай когда std вызывает юзерский код это не распространяется?

disba1ancer
а на случай когда std вызывает юзерский код это не...

можете какой-нибудь пример придумать?

disba1ancer
вряд ли

мне тоже ничего в голову не приходит. если пользовать пишет специализацию шаблона стандартной библиотеки для своего типа, то он подчиняется требованиям стандарта http://eel.is/c++draft/library#namespace.std-2

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта