@ProCxx

Страница 2271 из 2477
Alexander
08.08.2018
19:08:40
там кстати в CLion уже включили clangd на винде

Dmitry
08.08.2018
19:12:52
Детальнее хочется, конкретика, постановку задачи
https://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html

Maxim
08.08.2018
19:14:29
Люблю С++.

❤️

Google
Vitaly
08.08.2018
19:15:09
там кстати в CLion уже включили clangd на винде
https://blog.jetbrains.com/clion/2018/08/clion-2018-2-1-clangd-windows/

Constantine
08.08.2018
19:15:53
https://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html
а ради чего наследуем Derived?

Dmitry
08.08.2018
19:18:33
а ради чего наследуем Derived?
Есть алгоритм обхода гетерогенного дерева. Весь интерфейс визитора может быть выполнен в виде заглушек в crtp базе. Наследник посещает только интересующие его узлы и занимается из специфической обработкой. Кроме того может иметь доступ например к стеку с текущей позицией.

Constantine
08.08.2018
19:19:26
И да, на msvc диалекте обход гетерогенного дерева может быть выполнен template <typename Visitor>

Хотя я не вдавался в детали ASTVisitor, но в msvc диалекте есть __if_exists

Dmitry
08.08.2018
19:20:56
Constantine
08.08.2018
19:21:56
__if_exists позволяет проверить наличие метода Visitor::shouldVisitTemplateInstantiations

Dmitry
08.08.2018
19:22:19
Не, это грубый фильтр.

Constantine
08.08.2018
19:23:31
Ради чего там еще CRTP, кроме реализаций по умолчанию для посещений?

Dmitry
08.08.2018
19:28:19
Ради чего там еще CRTP, кроме реализаций по умолчанию для посещений?
А этого мало? Удобство использования, derived класс реализует минимальный необходимый ему набор visit функций. Можно конечно в каждом конкретном случае проверять наличие функции у Visitor. Но с crtp проще.

Constantine
08.08.2018
19:28:49
А еще не огребаем ошибок (хотя их можно избежать проверкой is_final<Derived>)

Google
Constantine
08.08.2018
19:30:51
Вопрос лишь в том, что диалектное __if_exist из msvc (было в 2003 году!) отсутствует в ISO C++, хотя и позволяет делать штуки, которые в С++17 будут через полную жопу делаться)

Потому что __if_exist может накрыть метод класса

template <typename T> struct some { struct trait: /*...*/ {}; __if_exists(trait::cc_mark) { //удачи реализовать подобное в ISO C++17 some(some const& other) { } } };

Dmitry
08.08.2018
19:33:25
Ну там же не просто метод, сигнатура.

Copy конструктор можно и через. static assert запретить.

Соломончик
08.08.2018
19:40:08
Copy конструктор можно и через. static assert запретить.
так можно? Тип запретить сам его вызов?

Dmitry
08.08.2018
19:41:45
так можно? Тип запретить сам его вызов?
Ага. То что не не компилируется не может быть вызвано.

Соломончик
08.08.2018
19:42:35
Dmitry
08.08.2018
19:43:09
а почему не " = delete"
Потому что оно conditional.

Constantine
08.08.2018
19:44:12
Синтаксис выше, кажется, реализуется в C++20 через requires

Constantine
08.08.2018
19:45:02
С помощью detected idiom такое нельзя сделать?
Нельзя поставить enable_if на нешаблонную функцию

Евгений
08.08.2018
19:45:22
Эх, времена. Только 2к18, а прогаем уже "на будущее"

Constantine
08.08.2018
19:45:35
А constexpr if?
Нельзя поставить enable_if на нешаблонную функцию

Dmitry
08.08.2018
19:45:43
Enable if is same and ... ;)

Constantine
08.08.2018
19:46:30
Enable if is same and ... ;)
на функцию без параметров умеете?

Dmitry
08.08.2018
19:46:56
Constantine
08.08.2018
19:47:42
Да, tag dispatching
Сейчас откопаю настоящий пример, 5 секунд

Google
Constantine
08.08.2018
20:06:21
Да, tag dispatching
https://godbolt.org/g/rtSSsH сделайте то же самое

дополнительное требование: наследоваться от общей базы запрещено

не хочу переводить аналогичный пример, когда деструктор должен сделать notify предку с собственным self_type&

Dmitry
08.08.2018
20:09:42
Да не принципиально, просто override if. Мдя...

Constantine
08.08.2018
20:10:11
Там не просто override if, там сразу CE за сигнатуру этой функции

Потому что в одном из двух случаев на ней final висит, а в другом обязательный override

Dmitry
08.08.2018
20:26:07
Условный override только через промежуточную базу.

Единственно легальный способ смешивания динамического и статического полиморфизма.

И кстати хороший пример применимости crtp :)

ConditionalInterace<Impl>

Antony
08.08.2018
20:53:20
Это в миллисекундах наcore i3 и кимпиляторе 4.8.5
Я тут немного опоздал... а на какой версии стандартной библиотеки это? Там в новом libstdc++ убрали мьютекс (в ряде случаев), так что на свежих компиляторах должны быть цифры сильно лучше чем на старых.

Constantine
09.08.2018
05:31:56
И да, если используется вспомогательные предки - все методы надо пробросить на Owner (передается ссылкой), в том числе оповещение о ctor/dtor с фактическим указателем MostDerived

Dmitry
09.08.2018
06:40:08
Напишете?)
https://godbolt.org/g/faEJWX

Ilia
09.08.2018
06:57:04
Люблю С++.
Во, молодец. Побольше бы таких постов, как твой.

Matwey
09.08.2018
06:58:53
Во, молодец. Побольше бы таких постов, как твой.
Чтобы было больше таких постов, должен быть веселый стикер с @antoshkka который руками показывает сердечко.

А, и стикеры разрешены должны быть :)

Google
Matwey
09.08.2018
07:03:09
Ты сколько в чате уже?
Года два наверное

А что?

Я помню как тут смеялись над 1488 подписчиками

Это сколько по времени назад?

Dmitry
09.08.2018
07:07:52
Во, молодец. Побольше бы таких постов, как твой.
И Пашу попросить запилить сердечки к постам ;

Anatoly
09.08.2018
07:15:18
Люблю С++.
А он тебя?

Maxim
09.08.2018
07:16:24
А он тебя?
Да так, нормальное отношение.

Anatoly
09.08.2018
07:17:12
Паша
09.08.2018
07:25:25
Подскажите, у кого есть опыт разработки под Linux на MSVC? Настроил подключение к удаленной машине, CMakeLists.txt собирается и под windows и под linux, в сборке для windows находятся тесты как в меню CMake/Run Tests, так и в Test Explorer. В сборке для linux не находится ничего, хотя сами тестовые программы успешно собраны и если запустить ctest на удаленном linux, тесты успешно запускаются. Что может быть не так? Как запустить тесты из-под MSVC?

Паша
09.08.2018
07:28:30
Ага ))

Вот install, например, еще не реализован ? https://github.com/Microsoft/VSLinux/issues/246

elias
09.08.2018
07:30:04
привет. есть ли среди вас смельчаки, которые опробовали Firemonkey в рамках C++ Builder Community (Tokyo 10.2)?

Constantine
09.08.2018
07:33:27
https://godbolt.org/g/faEJWX
ну вот и лишние букавы, причем (даже не особо изучая) очевидный минус - do_get_id нельзя скрыть

Алексей
09.08.2018
08:55:14
Я тут немного опоздал... а на какой версии стандартной библиотеки это? Там в новом libstdc++ убрали мьютекс (в ряде случаев), так что на свежих компиляторах должны быть цифры сильно лучше чем на старых.
Цыфры приведены для gcc4,радикального отличия для gcc8/vs2017 не наблюдал. Как уже отметили другие ораторы - надо взять алкогоритм с рекурсией

Страница 2271 из 2477