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

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

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

23 ответов

6 просмотров

Тут сильнее набросили, у людей оказывается бывают функторы с разными 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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта