Pull to refresh
10
0
Сергей @JegernOUTT

С++ developer

Send message

В статье, в принципе, пошли по пути создания собственного контейнера-адаптера с запоминанием складываемых типов :). От того же класса — визитора для последующей работы с ним никуда не ушли)


Здесь же лёгкие функции для более удобной работы с std::variant, который упрятан в любой неассоциативный контейнер.

Насколько я понимаю, пока нигде. В репозитории gcc на гитхабе концепты есть только в тестовых файлах

Самому жутко нравится. Постоянно ставлю себя на место новичков и смотрю на свой код.
Понимаю, что ничего не понимаю, хотя и стараюсь писать в общепринятых рамках

На первый взгляд — как будто можно. Но там могут возникнуть вопросы с сигнатурой сгенерированного функтора.
В общем нужно попробовать на досуге :)

Да, поэтому я и упомянул Concepts TS, который можно потрогать в последних gcc. Ну и какую — никакую реализацию можно глянуть в репозитории, ссылка на который в конце статьи

using Shape = variant<Circle, Square, EquilateralTriangle>;

vector<Shape> shapes;
shapes.emplace_back(EquilateralTriangle { 5.6 });
shapes.emplace_back(Square { 8.2 });

https://godbolt.org/g/MItwzR


gcc 4.7.1 вышла в 12 году) clang 3.1 примерно в это же время. Так что пора уже юзать современные компиляторы)
(про msvc не понятно, но последняя версия точно собирает)

server.port = 3487;//порт это ushort — так что cin.get() и т.п. функции тут работаю некорректно. Лучше задать фвручную

Чем вас не устроил стандартный способ?


std::cin << server.port;

А про остальной код можно промолчать. Смешение стримов и сишных обёрток для stdio уже говорит о многом. Зря сюда его выложили, для новичков он не годится, а для ветеранов только на потеху

В текущем проекте есть нечто подобное, привязанное к boost::fusion и rttr (можно так же добавить boost::hana и magic_get) и умеющее генерировать рандомные объекты pod-типов :) для тестов различных сериализаций / десериализаций / orm-ов / и т.п. отлично подходит)

Куча всего по constexpr вводят, даже обсуждают constexpr аллокации в куче. А хорошего метода для отладки шаблонного кода (constexpr кода в чуть меньшей степени) нету, помимо топорного static_assert и type_traits (хорошо, что ещё появился if constexpr).


Было бы здорово, если бы появилось что-то по типу static_warning. Оно, в сочетании с будущим $reflect (который, насколько я знаю, будет способен вытащить имя типа с присутствующими квалификаторами) могло бы чуточку поспособить отладке и пониманию кода, который разворачивается в момент компиляции.

2

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Date of birth
Registered
Activity