Size: a a a

cxx.Дискуссионная

2021 July 07

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Ну хуево, чо
источник

K

Kirill in cxx.Дискуссионная
Почему? Если ты потом восстанавливаешь cv - то ничего плохого в этом нет
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Ты нарушаешь контракт, и кто-то обязательно это забудет
источник

K

Kirill in cxx.Дискуссионная
Для пользователя это не видно
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Для пользователя как раз видно. Обычно продакшен код пишут много людей и в твой код могут заглянуть другие разработчики
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Видят, что у тебя слабые требования к контракту, и будут их эксплуатировать
источник

K

Kirill in cxx.Дискуссионная
Я имею ввиду, для пользователя который пользуется интерфейсом
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Ну тут всё равно const_cast в примере никак не обоснован, можно без него
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Я видел примеры, когда нельзя
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Это когда на const-семантику вешают другой контракт: например thread safety
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Так как в языке нет специальной конструкции для объявления этого контракта
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Вот там да: когда делаешь const_cast, то на самом деле говоришь, что тут обеспечение потокобезопасноти берёшь на себя
источник

K

Kirill in cxx.Дискуссионная
А можешь подсказать, как обойтись без конст каста в том коде, который я скинул?
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Ну я вижу, что вот это как раз не выполняется https://t.me/fludpac/464750

Пользователю как раз протекло наружу нарушение const-семантики (в TypeDispatcher::dispatch)

Если под пользовательским интерфейсом ты понимаешь класс CommandDispatcher, то у него тоже протекло в методе dispatch
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Тут вообще надо заново это дизайнить
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Начиная с переделки интерфейса
источник

K

Kirill in cxx.Дискуссионная
У меня была такая мысль...
источник

LG

Leonid Gribanov in cxx.Дискуссионная
И так. Глубокий, дискуссионный вопрос:
Зачем надо было создавать отдельный язык C++,  когда можно было написать библиотеку для расширения языка С. Например как glib.
источник

АК

Александр Караев... in cxx.Дискуссионная
И так. Глубокий, дискуссионный вопрос:
Зачем надо было создавать отдельный язык C,  когда можно было написать библиотеку для расширения языка Fortran.
источник

LG

Leonid Gribanov in cxx.Дискуссионная
Ну фортран сильно отличается от С, в то время как С от С++ не очень.
источник