Крылатый
Anatoly
А мне довелось увидеть на прологе систему управления подъемниками и турникетами на лыжном курорте в ленобласти. На вопрос "нах..я" был выбран именно пролог так толком никто не ответил.
Крылатый
О смысленности пролога, думаю, можно побеседовать вот тут: https://t.me/joinchat/AkxcTEMQENX1pfPjR0UhPA
ep
Крылатый
Специальный чатег по общим вопросам погроммирования.
Крылатый
Anonymous
Сейчас пруф скину, сек
Anonymous
http://en.cppreference.com/w/cpp/compiler_support
clang и gcc все основные фишки поддерживают, а вот у msvc куча недочетов
Anonymous
а, сори тогда что ворвался в тред, виноват
Anonymous
а кто-нибудь реализовывал нормальную рефлексию, не сильно зависимую от компилятора?
Видел попытки на CPPCON, но там была рефлексия с огромным кол-вом допущений и ограничений
Крылатый
Ваше очень важно для нас (нет).
Aidar
Через 18 лет
ep
Прикинь, да
ep
Разработчик, который там работал, говорил, что они всё переписали.
Anonymous
Да по факту многие фишечки того же С++11 спокойно реализуются средствами С++98. Да, конечно, далеко не все, но все же
Если кодобаза большая - то её придется долго под другой стандарт переписывать (да и нужно ли?) :)
Другое дело - когда кода не очень много, ну или работаешь один
Arseny
А зачем нужна рефлексия и почему все с ней так носятся?
Anonymous
+++
Ну, правда, всякие там for(Type a : blah) не напишешь. Да и смысл auto был немного в другом
можно заменить разве что на какой-то макрос, ну или заюзать компиляторозависимую штуку
Anonymous
а, и лямбд нету. Они бывают довольно удобны, но и без них жить можно
Anonymous
ага
Anonymous
А зачем нужна рефлексия и почему все с ней так носятся?
Можно получить информацию о методах и полях (название, количество аргументов, возвращаемый тип и т.п.), а так же информацию о базовых классах
Как минимум можно реализовать сериализацию ЛЮБОГО класса ровно одной строкой. Да и прикреплять всякие СЯП куда проще
Крылатый
Anonymous
отголоски этого есть, аля typeid - но все же это все не то
Anonymous
Потому что это уберполезно.
Угу. Все надеялись что в С++17 добавят, но в комитете все разругались (было несколько вариантов реализации статической рефлексии, не смогли выбрать самый удачный)
Aidar
Только для этого кажись
Anonymous
Вот другой пример:
Aidar
Arseny
Именно статическую рефлексию хотят сделать?
Aidar
Не вижу профита
Anonymous
редактор карт. Ты можешь увидеть свойства у объектов и их менять так, как душе удобно. И для этого тебе не надо руками регистрировать переменные
Aidar
Добавил поле но забыл что оно учитывается в компораторе
Александр
для этого нужно делать кастомные атрибуты, которые определяли бы, нужно ли сериализовать поле
Aidar
Anonymous
Aidar
Зачем тогда си++
Aidar
Я имею
Arseny
Если статически, то действительно круто выходит. Динамически - уже какая-то джава.
В rust есть derive, у него в чём-то схожая функциональность. Можно автоматически генерировать классу функции.
Anonymous
#holywar ?
Aidar
Кстати есть где-то перечисление всех вариантов рефлексии которые рассматривали?
Aidar
Aidar
Потомучто имена там на самом деле данные
Anonymous
@arseny ну сначала в любом случае статика будет. Если динамику добавят - то они её как-то хитро обыграют (например, компилятор будет автоматически пытаться использовать статическую рефлексию, если это возможно)
Anonymous
но так-то да, статики более чем достаточно
Aidar
Aidar
И так от констекспр плевался
Arseny
Anonymous
т.е. интерфейс остается тем же
Aidar
Anonymous
а вот реализация...
Aidar
Тебе больше ничего не нужно
Aidar
Или ты думаешь тебе позволят доставать то что не объявлено?
Aidar
Выглядит как дрисьня
Anonymous
а как ты через интерфейс получишь список полей, м? В нем-то всего лишь чисто виртуальные методы
Anonymous
Aidar
Или ты думаешь тебе позволят доставать то что не объявлено?
Aidar
Выглядит как дрисьня
Anonymous
не хочу лезть в субъективщину
Aidar
Это нарушение инкапсуляции кажется
Anonymous
Ну вот смотри, друг
Aidar
Не буду
Aidar
Это дичь
Aidar
Все
Anonymous
Тогда к чему все это? Монолог?
Anonymous
Допустим мы разрабатываем игрушку. Есть интерфейс сущности IEntity. Все новые виды сущностей (монстры, окружение и т.п.) наследуются от IEntity и переопределяют виртуальные методы
Вот мы дошли до редактора карт, в котором мы расставляем эти сущности (объекты). Как изменять свойства объекта, как их читать? Интерфейс - просто перечисление чисто виртуальных методов. Перекомпилировать редактор карт каждый раз? =))
Anonymous
Редактор карт знает лишь о каком-то IEntity, не более
Aidar
Динамическая рефлексия всегда сводится к контейнеру
Aidar