Size: a a a

2020 August 27

O

Ofee in pro.cxx
Constantine Drozdov
static_assert(forall<T>(std::is_convertible_to<bool>(foo(std::declval<T>())))
Не уверен, правильно ли понял суть. Это предложение добавлять static_assert на вызывающей стороне?
источник

CD

Constantine Drozdov in pro.cxx
Ofee
Не уверен, правильно ли понял суть. Это предложение добавлять static_assert на вызывающей стороне?
Нет, но можно сразу после объявления функции, потому что это проверка соответствия функции её контракту из документации
источник

Rn

Roman na in pro.cxx
Andrei K
Это очень полезное заблуждение, и лучше бы, чтобы оно у всех было и все бы писали в соответствии с ним.
Очень ограниченное и бесполезное. Просто оно самое примитивное, потому и популярное. Особенно в тех местах, где нету возможности реализовать что-то отличное от примитивного
источник

AK

Andrei K in pro.cxx
Ограниченное? Возможно. Бесполезное? Едва ли.
источник

Rn

Roman na in pro.cxx
Ofee
Я думаю, что да. Более того, чтобы это вообще хоть как-то работало, нужно пойти ещё дальше и потребовать, чтобы тело такой функции стало SFINAE-контекстом.

Однако, я и не спорю с тем, что непонятно, как это реализовывать в рамках языка, я рассуждаю на уровне абстрактной идеи "было бы неплохо, чтобы мы могли сделать дополнительные проверки над выведенным типом"
Как реализовать понятно. Непонятно как интегрировать с легаси и его последователями. Просто добавить новую вид функций. Чего очень сильно боятся. Но не потому, что с этим есть проблема, а просто так. Ведь их новый вид с корутинами добавили и ничего
источник

O

Ofee in pro.cxx
Constantine Drozdov
Нет, но можно сразу после объявления функции, потому что это проверка соответствия функции её контракту из документации
Думаю, здесь проблема в том, что мы не можем написать проверки для всех реально использованных входных данных. Я пока вижу в качестве решения только static_assert внутри самой функции. Но возможность перегрузка по возвращаемому типу, вероятно, была бы более мощным инструментом, чем просто проверка

Однако, пока вопросов о реализации возникло довольно много у меня, думаю мне есть смысл обдумать хотя бы часть из них, прежде, чем продолжать обсуждение, я думаю, что могу ответить на довольно малую часть из заданных вопросов
источник

Rn

Roman na in pro.cxx
Andrei K
Ограниченное? Возможно. Бесполезное? Едва ли.
ну когда нету возможности - оно действительно полезное. А когда возможность есть, то зачем? Зачем использовать заранее более ограниченный подход? Его можно внедрить рядом/на базе менее ограниченного, но как основной - это как раз таки вредно
источник

AK

Andrei K in pro.cxx
Потому что есть очевидный тренд ухода от неверифицируемого и небезопасного кода в сторону перекладывания проверок на компилятор и аттрибутирования кода. Чем раньше и больше людей в индустрии привыкнет это делать — тем ближе мы к светлому будущему с меньшим количеством ошибок, автодоказательствами корректности и дополнительным высокоуровневым оптимизациям.
источник

AK

Andrei K in pro.cxx
Люди неслучайно придумывали всякие богомерзкие венгерские нотации в условиях отсуствия инструментов.
источник

Rn

Roman na in pro.cxx
Andrei K
Потому что есть очевидный тренд ухода от неверифицируемого и небезопасного кода в сторону перекладывания проверок на компилятор и аттрибутирования кода. Чем раньше и больше людей в индустрии привыкнет это делать — тем ближе мы к светлому будущему с меньшим количеством ошибок, автодоказательствами корректности и дополнительным высокоуровневым оптимизациям.
Это манипуляция. Анализ уровня сигнатур существует и проповедуется не потому, что анализ тел "не безопасен". Даже не знаю что на это ответить
источник

Rn

Roman na in pro.cxx
к тому же, в лагере сигнатур очень большие проблемы с возможностями, оптимизаций(каких угодно) там в принципе не наблюдается нигде. Сигнатура - это не какой-то выбор осознанный. Это просто следствие отсутствия возможностей реализовать что-либо более мощное.

Поэтому там и проблемы с полиморфизмов, который заменяется на подтипный огрызок.
источник

AK

Andrei K in pro.cxx
Я и не говорил, что он проповедуется поэтому. Просто в упомянутой уже выше ФП парадигме иногда из одной лишь сигнатуры можно целиком вывести имплементацию.
источник

Rn

Roman na in pro.cxx
Andrei K
Я и не говорил, что он проповедуется поэтому. Просто в упомянутой уже выше ФП парадигме иногда из одной лишь сигнатуры можно целиком вывести имплементацию.
нельзя. Это просто посовая мифология. Когда в сигнатуре множество лишнего мусора, а описывается примитивная трансформация - действительно, можно вывести тело. Но это не имеет смысла, потому как работает только при написания очередного разворота списка по туториалу
источник

Rn

Roman na in pro.cxx
да и на подобном принципе работает любой коплишен. Просто организуй где угодно контекст с одним выводом и будет та самая генерация тела
источник

AK

Andrei K in pro.cxx
Ну нельзя, так нельзя :) я продолжать дискуссию не буду.
источник

Rn

Roman na in pro.cxx
Andrei K
Ну нельзя, так нельзя :) я продолжать дискуссию не буду.
Ну когда вся аргументация пусты лозунги, то что ещё можно продолжать? Ну где-то что-то есть, кто-то вывел одну строчку тела. Это не свойство, это ничего не значащие фокусы. О чём я и сообщил. Ответа на это в методичке не заложено, потому его и не последовало и не последует
источник

КП

Крылатый Пегас... in pro.cxx
О, уже до методичек дошло.)
источник

КП

Крылатый Пегас... in pro.cxx
Andrei K
Ну нельзя, так нельзя :) я продолжать дискуссию не буду.
Кстати, дратути.)
источник

AK

Andrei K in pro.cxx
Крылатый Пегас
Кстати, дратути.)
Приветики. Давно не виделись.
источник

Rn

Roman na in pro.cxx
Крылатый Пегас
О, уже до методичек дошло.)
ну а как это называется? Вначале пошёл типичный лозунг "истина только у нас - все остальные недостойны и не спасутся". Далее пошло совсем плохо, был использован совсем наивный лозунг "где-то там". Где-то там выводится. А что, зачем и почему - ну то не важно.
источник