
Alexander
08.08.2018
19:08:40
там кстати в CLion уже включили clangd на винде

Dmitry
08.08.2018
19:12:52

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

Google

Vitaly
08.08.2018
19:15:09

Constantine
08.08.2018
19:15:53

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

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

Dmitry
08.08.2018
19:41:45

Соломончик
08.08.2018
19:42:35

Dmitry
08.08.2018
19:43:09

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

Побитый
08.08.2018
19:44:48

Constantine
08.08.2018
19:45:02

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

Побитый
08.08.2018
19:45:27

Constantine
08.08.2018
19:45:35

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

Constantine
08.08.2018
19:46:30

Dmitry
08.08.2018
19:46:56

Constantine
08.08.2018
19:47:42

Google

Alex Фэils?︙
08.08.2018
19:47:55

Constantine
08.08.2018
20:06:21
дополнительное требование: наследоваться от общей базы запрещено
не хочу переводить аналогичный пример, когда деструктор должен сделать 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

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

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

Ilia
09.08.2018
07:01:37

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?

Ilia
09.08.2018
07:28:14

Паша
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)?

Simon
09.08.2018
07:33:10

Constantine
09.08.2018
07:33:27

Алексей
09.08.2018
08:55:14