Matway
А что, proof of concept с get<uint> не пойдёт?
Ну, вообще-то подойдёт :) Зачем зря тратить время. А ты же видел мою реализацию, так что не участвуешь.
Andrei
Вообще-то не видел.
Andrei
Только слышал :)
Andrei
А стдлиб чей? Какой версии?
Vladislav
libc++
Vladislav
3.7
Matway
Кстати, в шланге у меня и родной тупл 16 показывает
Попробуй развернуть. <double, char, char, char, char, char, char, char>. Возможно, там с головы элементы используются.
Dmitry
так почему 64 показывает? как чинится?)
Vladislav
ideone.com/l9vXtM
Vladislav
На rextester'е только у msvc проблемы с этим
Matway
Круто. Видимо, свежак.
Matway
1>clang.exe : error : clang frontend command failed due to signal (use -v to see invocation) А вот мой variant Clang не осилил :( Упал компилятор.
Vladislav
А какая версия шланга?
Matway
Ничего незаконного не делал.
Matway
3.8
Matway
http://ideone.com/g8EgfF Зачем они их развернули? :)
Vladislav
http://ideone.com/g8EgfF Зачем они их развернули? :)
Не знаю) но он реализован как раз как я предполагал это делать - через вариадик множественное наследование
Matway
Но вообще довольно круто, что такое сделали в стандартной библиотеке.
Dmitry
Наследование в метапроганье - зло.
Vladislav
Тоже так считаю.
А что поделать, если вариадик композицию не завезли?
ttldtor
не понимаю, как фичу можно злом называть)
Vladislav
Ну то есть завезли, туплы, но их надо сначала написать как-то)
Dmitry
Покажите что за варианты то пилите
Matway
Покажите что за варианты то пилите
Ща. Деструкторы, конструкторы, присваивание и геттеры сделал. Визитор пока не придумал.
Dmitry
Ну это. Может в личку мне ссыль кините как готово будет.
Anatoly
умеющие что?
Dmitry
Jonson
Anatoly
я понял, друзья, я не понял что хочет человек от jenkinsa
Berkus
да а что
Berkus
смотри gitlab плагин и чо они намудрили там
Berkus
возможно его надо обновить или наоборот даунгрейднуть
Matway
Доделал visitor. Заменяю std::variant и бенчмаркаю.
Stanislav
а нафига женкинс для гитлаба если есть гитлаб си?
Berkus
вероятнее всего к текущему чату этот вопрос относится вообще никак
Berkus
а нафига женкинс для гитлаба если есть гитлаб си?
они наверное из гитлаба таскают какой-то сурс
Vladislav
Это, видимо, довольно непросто делается.
Ну такое, да https://github.com/llvm-mirror/libcxx/blob/master/include/tuple
FailsBot
http://en.cppreference.com/w/cpp/container/set/emplace
FailsBot
Search results for "variant" 1. std::variant 2. std::bad_variant_access
Matway
Да. Сравнялось со switch. Причём стало одинаково CLang и MSVC.
Matway
Идея такая: http://ideone.com/bW852w
Matway
Ограничение очевидное - не более N альтернатив. Где N - количество строк, которое не поленились написать в Variant.
Arseny
А лишние case-ы компилятор догадывается в default перенести?
Александр
Ну вот, меня обманули. Стёр либу и сегфолт
Александр
кстати, кто-нибудь знает разумный способ динамической подгрузки либ, но с предварительной их расшифровкой?
Александр
прочитал, расшифровал, сдампил на диск, загрузил
Александр
... с диска слили расшифрованную
Александр
успеют слить за несколько микросекунд думаешь?
Александр
никсы ж файлы не держат как винда
Александр
то есть линукс позволит прогрузить в память, удалить исходный файл и всё будет ок? удивительно
Александр
да, линукс не запрещает удалять используемые файлы
Александр
можно хоть rm -rf / сделать
Крылатый
Пишите в одном сообщении)
Александр
Это цитата отсюда же
Александр
🐙 Antony
Я пишу variant, который насильно будет делать switch.
Это делает Boost.Variant http://boost.org/libs/variant
🐙 Antony
Это делает Boost.Variant http://boost.org/libs/variant
А вообще надо заводить баги на подобное "Компиялтор генерирует неоптимальный код"
🐙 Antony
Беда с неоптимальной кодогенерацией на variant подобных классах тянется с 2000 годов. В boost это обошли насильно вставив switch вместо рекурсии. За 15 лет можно было бы починить уже проблему на уровне компилятора
Matway
Это делает Boost.Variant http://boost.org/libs/variant
Привет. Вроде бы только для визитора. У меня большую часть времени съедали другие операции, где нет switch.
Александр
А как в бусте сделали switch с переменным числом аргументов? Препроцессор?
Matway
А как в бусте сделали switch с переменным числом аргументов? Препроцессор?
Да. BOOST_PP_REPEAT( BOOST_VARIANT_VISITATION_UNROLLING_LIMIT , BOOST_VARIANT_AUX_APPLY_VISITOR_STEP_CASE , _ )
Крылатый
Упорото.
Крылатый
Впрочем, пилил switch на шаблонах и генерировался такой же код, что и простой switch.
Berkus
бустовато!
Matway
Почему-то boost::variant ещё медленнее, чем std::variant.
🐙 Antony
Почему-то boost::variant ещё медленнее, чем std::variant.
Оу. А в каком месте тормозит нашли? попробуйте собрать с NDEBUG
Matway
Оу. А в каком месте тормозит нашли? попробуйте собрать с NDEBUG
Наибольшая нагрузка на variant::variant(variant&&), просто потому, что чаще всего вызывается. Разумеется, все сборки с максимальной оптимизацией и с NDEBUG.
Anatoly
@MatwayBurkow если есть, можете расшарить синтетический тест?
🐙 Antony
+1
Evgenii
вот это поворот)