Огромное спасибо за вашу работу, очень люблю плюсы.
Используете ли вы в компании, или в своих личных проектах, классы способные хранить числа произвольной длинны (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 причин/. Считаю, что Стандарт работает как эталон для всех остальных.
Очень крутое начинание, но, либо, в Стандарт переедет библиотека GMP, либо ничего не получится. К сожалению, чтобы числа стали безразмерными и эффективными на уровне языка, никакого компилятора не хватит.
Остальные задачи потрясают своей колоссальностью, но очень бы хотелось примитивную рефлексию enum и enum class.
Пример:
Надо на уровне компилятора, стандатрной библиотеки держать:
P.S. часто слышу, что плюсы не те, так как /нет сборщика/устаревший/не следит за памятью/over 9000 причин/. Считаю, что Стандарт работает как эталон для всех остальных.