Pull to refresh
0
Send message
Огромное спасибо за вашу работу, очень люблю плюсы.

Используете ли вы в компании, или в своих личных проектах, классы способные хранить числа произвольной длинны (unbounded integers) с нестандартными аллокаторами?

Очень крутое начинание, но, либо, в Стандарт переедет библиотека GMP, либо ничего не получится. К сожалению, чтобы числа стали безразмерными и эффективными на уровне языка, никакого компилятора не хватит.

Остальные задачи потрясают своей колоссальностью, но очень бы хотелось примитивную рефлексию enum и enum class.
Пример:
enum SomeState {
    Undefined = -1,
    AllOk = 1,
    SomeStrange1,
    SomeStrange2,
    ...
};
...
// Неинициализированное состояние -- какое угодно, хотелось бы 
// что-то вроде "Undefined = -1: default", тем более слово default зарезервировано, 
// в основном, для перечислений.
    SomeState s;
    std::cout << s << std::endl; // неизвестно что выведет

// Вывод значения сейчас:
    if (s != AllOk)
        std::cout << "Not correct state: " << s << std::endl;
    // Выведет "Not correct state: 2"
// Хотелось бы:
    if (s != AllOk)
        std::cout << "Not correct state: " << std::enum_to_string(s) << std::endl;
    // Пусть выводитдет "Not correct state: SomeStrange1"
...
// Чтение из бинарного потока:
    ostream >> s; // если прочитано что-то, не то, в переменной будет мусор.
// Хотелось бы:
    try
    {
        ostream >> s; // если прочитано что-то, не то, бросается исключение.
    }
    catch (const std::enum_exception &e)
    {...}
...
// Как следствие предыдущего, кастовать:
    SomeState s;
    int sint = 10;
    try
    {
        s = enum_cast<SomeState>(sint);
    }
    catch (const std::enum_exception &)
    {....}



Надо на уровне компилятора, стандатрной библиотеки держать:
    T enum_cast<T>();
    class std::enum_exception;
    если совсем расслабиться :default  на к-л значение в перечислении.


P.S. часто слышу, что плюсы не те, так как /нет сборщика/устаревший/не следит за памятью/over 9000 причин/. Считаю, что Стандарт работает как эталон для всех остальных.

Information

Rating
Does not participate
Registered
Activity