Александр
Properrr
нужно запилить визуализатор JS-а.
Constantine
Properrr
типа визуальное программирование...
Anatoliy
однако ж макрософт контрибьютит в клэнг, няз
Vladislav
Constantine
ну MSVC name lookup это буквально "ВЕСЬ name lookup выполняется в точке инстанцирования"
Properrr
есть API на js-е в desktop приложении. хочу визуализировать код.
думал написать интерпретатор js-а в промежуточную модель и представление этой модели в виде графов визуальных
Anatoliy
Anatoliy
пример говорит о том, что cl.exe вообще игнорирует парсинг шаблонов, что на фоне такого расточительного name lookup абсурдно
Constantine
https://godbolt.org/g/fzS95P
Anatoliy
Constantine
корректно ведь всё
я к тому, что clang в действительности не умеет в MSVC name lookup
Anatoliy
ладно, что такое "MSVC name lookup"? К чему бы привёл он в данном примере? К тому, что выберется f(int)?
Constantine
Anatoliy
у меня справа написано xor EAX, EAX
Anatoliy
Constantine
clang: функция main() возвращает 0
msvc: функция main() возвращает 42
Anatoliy
аа, совсем справа
Stanislav
c 15.3
Properrr
у шланга варик более логичный, имхо
Constantine
Anatoliy
если это было неспецифицированно в старых стандартах (что вряд ли), то может быть много легаси кода, который от этого зависит
Constantine
Anatoliy
да кому это надо? вот только в boost::spirit::x3 видел использование таких тонкостей
Stanislav
с /permissive- выдает тоже 0
Constantine
Constantine
двойной проход
я не знаю, зачем в стандарт приняли именно two-phase, спросите кого-нибудь другого
Anatoliy
вот статейка интересная http://talesofcpp.fusionfenix.com/post-8/true-story-i-will-always-find-you
Anatoliy
можно рекурсивные парсеры дефайнить благодаря two-phase name lookup
Constantine
круто
Constantine
а еще можно убить себе ногу любой перегрузкой функции
Constantine
в разных файлах
Anatoliy
круто
очень интересный трюк
Constantine
Тоже это на ум пришло. Разная семантика, но её и так можно получить.
В общем, когда на одну чашу весов предлагают култрюки, а на другую что любая перегрузка функции с параметрами, допускающими implicit cast, в разных заголовочных файлах, создает потенциальный ODR violation из-за порядка включения этих файлов, я даже не знаю, что выбрать
Constantine
напомню, что ODR violation это "программа является UB без проверок"
Anonymous
,
Anatoliy
no diagnostic required, значит слишком дорого проверять. Язык переусложнён. Чего стоит этот using std::chrono; year_month_day ymd = 2016y/May/29d; пример. Просто бред. Ради литералов встраивают DSEL в стандартную библиотеку.
Anatoliy
Я вот пожертвовал бы вполне рантаймом на парсинг строки "2016/03/29". Не жалко.
Anatoliy
Тем более её тоже compile time можно распарсить
Danil
Constantine
Constantine
И я вам могу набросать очень простые примеры, когда two-phase name lookup делает UB из достаточно безобидного кода при легкой модификации
Anatoliy
Да я верю. Может быть у них надежда на модули?
Assasin
Constantine
Ничего не меняется
Constantine
С точки зрения модулей
Assasin
меняется удобство разработки как минимум
Constantine
Нет, two phase name lookup не упрощает модули
Assasin
мне лично намного приятнее будет писать код в одном .cpp файле, а не делить на интерфейсы
Constantine
Он вообще влияет на конкретные случаи, когда name lookup выполняется в шаблонном коде, не содержащем dependent names
Assasin
а, вы не вообще имеете в виду, извиняюсь.
Constantine
Constantine
вот это просто гениально, ящетаю
🐙 Antony
Constantine
Constantine
ни один не-шаблонный метод не сможет вызвать эту специализацию is_null для std::unique_ptr
Anatoliy
так это наоборот защита от "доопределения" получается
Anatoliy
понятно что можно хедеры в разном порядке включить и будет разное поведение. Но это в обоих случаях верно было бы
Constantine
Constantine
мусор это получается
Anatoliy
ADL сработал
Constantine
именно
Constantine
в ADL другие правила!
Александр
скажите пожалуйста, какого чёрта std::any не конструируется от move-only типов?
Anatoliy
няз ADL изобрели для операторов
Anatoliy
а это - я фз для чего
Anonymous
какое ПО установить , чтобы делать игру на directX используя си++? есть ms visualstudio 2017 и Qt creator
Anonymous
на windows 7
Constantine
Constantine
Александр
Constantine
сам vector работает даже для не-MC типов
Anatoliy
пишут, что есть предложение исправить https://stackoverflow.com/a/27194652/1430927