Igor
вернее, не столько метаклассы, сколько constexpr-blocks на которых они основываются
Alexander "SonnySlave"
метаклассы Саттера про это, по идее
а вроде ему концепты нужны
Alexander "SonnySlave"
как раз замена SFINAE
Berkus
за clangd будущее по идее
EasyClangComplete пока норм справляется вроде, не идеально, но протокол побогаче LSP
🐙 Antony
Не знаете, был ли proposal или обсуждение про if constexpr вокруг объявлений методов класса? Что-то вроде такого: template<typename T> class C { public: if constexpr (std::is_integral_v<T>) { void foo() {} } else { void bar() {} } };
Первоначальное предложение на constexpr if как раз позволяло такие конструкции. После обсуждения решено было запретить подобное, так как возникало множествво нерешаемых вопросов. Самое первое предложение по теме: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3322.pdf
Alexander "SonnySlave"
надеюсь, что такого говна не будет
Alexander "SonnySlave"
и так засрали constexpr'ом язык
🐙 Antony
Открыл для себя крутую штуку с неприличным названием. Анализирует кусок ассемблера и рассказывает сколько времени и на каких портах выполняется каждая инструкция antoshkka@antoshkka-ub14:~/experiments/iaca-lin64$ gcc -O2 -c slow.S -o slow.o && ./iaca -arch HSW -reduceout ./slow.o Throughput Analysis Report -------------------------- Block Throughput: 1.49 Cycles Throughput Bottleneck: FrontEnd Loop Count: 48 Port Binding In Cycles Per Iteration: -------------------------------------------------------------------------------------------------- | Port | 0 - DV | 1 | 2 - D | 3 - D | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------------------------- | Cycles | 1.0 0.0 | 1.0 | 0.5 0.5 | 0.5 0.5 | 0.0 | 1.0 | 1.0 | 0.0 | -------------------------------------------------------------------------------------------------- | Num Of | Ports pressure in cycles | | | Uops | 0 - DV | 1 | 2 - D | 3 - D | 4 | 5 | 6 | 7 | ----------------------------------------------------------------------------------------- | 1* | | | | | | | | | mov eax, edi | 1 | | | | | | 1.0 | | | mov edx, 0x51eb851f | 2 | | 1.0 | | | | | 1.0 | | mul edx | 1* | | | | | | | | | mov eax, edx | 1 | 1.0 | | | | | | | | shr eax, 0x5 | 3^# | | | 0.5 0.5 | 0.5 0.5 | | | | | ret Total Num Of Uops: 9
Vsevolod
а как она разбирает микроархитектуру?
Vsevolod
это только для интелов, да?
🐙 Antony
Она просто от Интела. они знают что у них выполняется и на каком порту: Intel® Architecture Code Analyzer
🐙 Antony
поддерживает интеловские архитектуры: Usage: iaca <option(s)> <file> -arch string Architecture, Supported: HSW, BDW, SKL, SKX (default "SKL")
Vsevolod
а с avx и aes работает?
Vsevolod
у меня тут возник вопрос насчет использования aesenc для хеш функций
Vsevolod
в один-то поток оно вжух, а вот что дальше - непонятно
Vsevolod
эхехе, у нас сэнди везде
Vsevolod
даже хасвилей еще не завезли толком
Alexander "SonnySlave"
а то я тут vtune захотел снова пощупать, а он мне сказал досвиданья
🐙 Antony
у тебя триалка этой штуки? или как?
С офф сайта качается, надо только галку поставить на лиц соглашении
🐙 Antony
Без СМС и регистрации
Alexander "SonnySlave"
а, гут. Спасибо
🐙 Antony
на вход кушает объектник/программу, где интересующий код помечен как #include "iacaMarks.h" void my_div2(unsigned& a) { IACA_START a = *foo(); // Код который меряем IACA_END } Или размечен в ассемблере как .intel_syntax noprefix mov ebx, 111 .byte 0x64, 0x67, 0x90 ; Ваш ассемблер mov ebx, 222 .byte 0x64, 0x67, 0x90
Alexander "SonnySlave"
у амд подобные штуки есть?
Egor
это надо в какую-то подборку инструментов включать, и ссылку в шапку
🐙 Antony
Это надо просить godbolt добавить на сайт
Alexander "SonnySlave"
и тебе добра. Вакансии - @AlexFails
🐙 Antony
Это надо просить godbolt добавить на сайт
Кстати, а давайте я и правда вечерком свяжусь с автором и предложу эту идею....
Berkus
Кстати, а давайте я и правда вечерком свяжусь с автором и предложу эту идею....
если у интеля нет ограничений на подобное использование...
🐙 Antony
В лицензии вроде всё ок
Gopneg
господа, #error : The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro. в C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xkeycheck.h все варинги C4005 ругаются на этот же файл, чоделать? VS 2013
Gopneg
вот только где? все указанные варининги только в этом файле
Anatoly
вот только где? все указанные варининги только в этом файле
в гугле https://social.msdn.microsoft.com/Forums/vstudio/en-US/6cb13b36-1da5-49ec-895c-e002dfb7546a/xkeycheckh-and-macro-defined-keywords?forum=vcgeneral
Gopneg
а может эти варининги таки не включены у меня где-то? EMIT WARNING чо делает? не форсирует случайно?
Gopneg
в гугле https://social.msdn.microsoft.com/Forums/vstudio/en-US/6cb13b36-1da5-49ec-895c-e002dfb7546a/xkeycheckh-and-macro-defined-keywords?forum=vcgeneral
ну это я видел, понимания больше не стало, по хорошему надо понять где ошибка, а не скрыть ее
Gopneg
еще непонятки кстати, файл лежит в External Dependencies одного проекта, а ошибку показывает в другом проекте
Anatoly
Так сделай Enable warning C4005
Anatoly
минимальный пример есть, который воспроизводит проблему?
Berkus
Pragma warning enable
Gopneg
нету, это не мой проект, пытаюсь собрать
Gopneg
Pragma warning enable
легче не стало, чесгря
Anatoly
на гитхаб ссылка есть?
Gopneg
на сурфордже, ща дам
Gopneg
https://sourceforge.net/projects/oreka/
Gopneg
из транка
Gopneg
его чтобы собрать надо кучу легаси говнища скачать да еще и сбилдить
Gopneg
вот вроде почти все сделал, но на этих макросах встрял
Anatoly
@Gopnegg нашел вот здесь рецепт https://wiki.openttd.org/Compiling_on_Windows_using_Microsoft_Visual_C%2B%2B_2012 : Fix for Error C1189: "The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro[...]" Open the project's Property Pages dialog box. (See step 2.6) Navigate to C/C++ -> Preprocessor. Select Preprocessor Definitions and add _XKEYCHECK_H; to the list. DON'T forget the final ; it's important
Anatoly
я понимаю, что это хак
Anatoly
но хотя бы соберешь
Gopneg
ну лана, хотя это я тоже находил %) попробуем собрать из говна и палок, потом поглядим
Gopneg
ща палки соберутся (или нет :) и попробую
Gopneg
эх, еще хидер потерялся где-то, блин...
🐙 Antony
На внутреннюю почту WG21 пришли результаты опроса разарботчиков по C++ Помимо модулей, рефлексии и прочих вещей, над которыми уже работют, на первом месте по количество пожеланий находится ...
🐙 Antony
... нахоится запрос на добавление package manager в С++
Alexander "SonnySlave"
Bryce Lelbach в Твиттере уже постанул 😊
🐙 Antony
ага, рука об руку идут
Alexander "SonnySlave"
никто и не ожидал, да? 😊
🐙 Antony
я точно не ожидал такого
Alexander "SonnySlave"
😊
Олександр
Хипстеры наотвечали просто :)
vladislav
не понял твой месседж
vladislav
пакетник не нужен плюсам?
vladislav
да
Pavel
думаю пакетный менеджер не должен к самим плюсам относится, при чем спека языка и пакетный менеджер?
Pavel
в спеке новомодных шарпов есть записи про нугет?
vladislav
Так и без рефлексии с модулями можно прожить. Вообще, можно прекрасно программировать на 3-м стандарте, зачем вообще вводить какие-то непонятные фичи? Соответствовать времени? Ведь С++ такой офигенный, что его никто никогда не убьёт.
vladislav
ЛОЛЧТО
Alexander "SonnySlave"
она уже началась
Alexander "SonnySlave"
не следует путать системные пакеты и пакеты для language X
Alexander "SonnySlave"
ну война С++ пакетных менеджеров уже идёт
Alexander "SonnySlave"
кто завоюет большинство, тем и будем пользоваться
Alexander "SonnySlave"
я говорил, что пакеты фортрана и С++ разные?