cyberzx 🇷🇺
vladislav
а зачем они мне нужны?
cyberzx 🇷🇺
вот ни разу не сталкивался с тем, что бы багфикс выпускали вместе с поломкой обратной совместимости
vladislav
Своим присутствием мешают.
Danil
наличием, лол
Danil
хочу тонко
Danil
не хочу жирный stdlib
Danil
лол
Danil
вот и все
vladislav
Наличием присутствия
Danil
жирный stdlib не влезет на маленькую flash
Danylo
гусары, не пора ли в холивар?
vladislav
Я по-моему объяснил, я в принципе за минимализм во всём, такой подход к жизни.
Danil
без stdlib как вариант
Anton
Там stdlib кастрируется по самое небалуй.
Anton
Причём c++ library почти не юзается, если говорить об STM-мах
Anton
google newlib
Крылатый
Продолжаем
struct i_base {
virtual i_base()
{}
};
struct foo : i_base {
};
// Создаём точную копию
using explicit bar = foo;
/* Таким образом у нас имеется тип, аналогичный foo.
struct bar : i_base {};
И применим dynamic_cast.
*/
Крылатый
Крылатый
От foo для bar, но, очевидно, неприменимы без явного каста.
Constantine
У меня появилась безумная идея по поводу integer strong type alias. Можно объявить enum class aliased_type : int {} и немного тайпкастов
cyberzx 🇷🇺
Separation of concerns. Я не против стандартных кроссплатформенных прикладных библиотек. Я хочу, что бы они были отделены от стандарта самого языка и его core-библиотек.
Да я хотел бы, что бы С++ из под коробки умел столько же, сколько и питон. И HTTP сервер запустить, и md5 посчитать, и всякое попарсить.
Но пусть это будет как-то отдельно. Возможно тоже стандартизированно, но каким-нибудь паралелльным стандартом.
Крылатый
Крылатый
Но тут суть не только в интах.
Крылатый
А в newtype в целом.
Крылатый
Так вот щас не начинай спамить.
Berkus
Berkus
expletive_cast<>
Крылатый
Крылатый
Верней, именно такой вариант и вбросил.
Berkus
using tourette aliased_shit = name;
expletive_cast<real_shit>(aliased_shit);
Крылатый
А вот каст отдельный не нужен, имхо.
Constantine
ахаахахахаха
Berkus
на арме твои статик строки могут лежать прямо рядом с функцией например
Ivan
Да, я и не про это. Я не понимаю ассемблер, но ведь вторая структура на стеке, это же видно из кода?
Ivan
Я имею ввиду символы структуры
Constantine
ну по сути
namespace std {
template <typename T1, typename T2>
enable_if<is_strong_alias<T1, T2>::value, T1&>::value explicit_cast(T2 & ref) { return static_cast<T1&>(ref); }
}
Berkus
Крылатый
Крылатый
Если не может привести, то не приведёт.
Крылатый
Хм...
Berkus
static_cast и так слишком оверлоадед, д
Constantine
я разрешаю static_cast для ссылок и пишу std::explicit_cast
Constantine
но это все пропоузалы
Крылатый
Вкинь в тот дискасс на гуглогруппе, тогда.
Constantine
Крылатый
Да.
Крылатый
Кнопочка «ОТВЕТИТЬ»
Крылатый
В принципе, это ж просто мэйл листы.
Constantine
Я вот начал писать Strong typedefs are guaranteed to be exactly the same in-memory and are exactly the same type by RTTI
Constantine
И задумался что шаблоны не будут работать
Крылатый
Почему?
Constantine
потому что typeinfo одинаковый может быть проблемой для какого-нибудь dynamic_cast и std::variant
Constantine
т.е. видимо нельзя std::variant<aliased1, aliased2>
Крылатый
Это ещё почему? Это же два совершенно разных типа.
Крылатый
Так что и typeinfo должны быть разными.
Constantine
Я собирался писать вот так: Strong typedefs are guaranteed to be exactly the same in-memory and are exactly the same type by RTTI
Constantine
Иначе их нельзя static_cast-ить
Крылатый
А..
Крылатый
Постой.
Крылатый
И в чём тут проблема?
Крылатый
Если можно руками обхявить две одинаковые структурки с разными именами. Они будут ижентичны как в памяти, так по RTTI. Но разные имена.
Крылатый
Имена же!
Berkus
так explicit typealias это не только имена
Constantine
> Они будут ижентичны как в памяти, так по RTTI
нет
Крылатый
Хм. Ок.
Constantine
а, кто-то уже вбросил инфу с чатика туда
Крылатый
Так ты и вбросил жи.
Крылатый
@webreh го пропозал писать?
Constantine
У меня пока много вопросов :)
Constantine
Ну например я немного сомневаюсь, что все пойдет как надо, если будут разрешен по сути implicit cast для всех вычисленных использований type в функциях aliased_type
Constantine
Я пока хотел написать мини-библиотеку для integral types, используя объявление enum class в качестве основы