Я хотел бы создать boost :: spirit :: qi :: грамматику для произвольного целого числа. Хранение целого числа в строку просто ужасно тратит память, особенно когда целое число представлено в двоичном формате. Как можно использовать целочисленный класс произвольной точности (например, GMP или llvm :: APInt) в структуре?
Если у вас есть текстовый файл, который содержит ряд произвольно длинных целых чисел, тогда Qi, безусловно, можно использовать для очень эффективного разбора этого файла на отдельные числа, представленные в виде текстовых токенов. Как вы преобразуете эти токены в числа GMP, зависит от вас, но я полагаю, что механизм, предоставляемый библиотекой для ввода чисел с помощью текста, более оптимизирован, чем все, что вы, вероятно, сможете придумать.
Если вы спрашиваете, можно ли адаптировать Qi для чтения двоичного файла, содержащего произвольно длинные числа, тогда ответ — да — поддержка двоичных парсеров уже есть, смотрите здесь: http://www.boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/reference/binary.html. Я не уверен в формате целых чисел вашей целевой математической библиотеки, я думаю, что вы могли бы связать эти примитивы вместе для непосредственного чтения двоичных представлений ваших чисел. Или вы можете создать свой собственный примитив синтаксического анализатора на основе одного из них.
Других решений пока нет …