Во-первых, я отвечал строго про «затаскивать в стандарт», как это сейчас происходит — выглядит все не так катастрофично. Видение развития C++ — отдельная тема.
Во-вторых, сейчас можно писать return std::make_tuple{10, 20, 30} или std::tie{i, j, k}, что, конечно, ужас-ужас-ужас по сравнению с предложенными вами вариантами. Но, с другой стороны, нам — плюсистам за это доплачивают.
Давайте посмотрим на огромное количество непонятного кода на шаблонах, добавленного в стандартную библиотеку C++11:
Threading
Tuple types
Hash tables
Regular expressions
Smart pointers
Random number
Wrapper reference
Polymorphic wrappers for function objects
Type traits for metaprogramming
Что из этого вы бы предложили заменить простым и понятным кодом в компиляторе?
Собственно, именно такие у меня планы. Сейчас демо приложение — это довольно продвинутый рендерер на AGG и добавить Skia и Cairo будет не особо сложно. Но сначала я решил отрелизить саму библиотеку.
Кстати, сразу возникает два варианта: 1) загружать SVG в промежуточные структуры, например DOM, это дает scripting и анимацию, но значительный оверхэд и сложнее реализация; 2) отрисовывать сразу в процессе чтения — проще код, меньше оверхэд по памяти.
Похоже, что чтения и нет, только создание. В этом и проблема SVG — создавать можно без проблем, используя только std::ofstream, а полноценное чтение мало кто может себе позволить.
nanosvg занимает свою нишу — поддерживает только какое-то свое подмножество SVG с существенными ограничениями на входные данные, зато легковесная. Разбирать SVG (XML) как строку — одно это уже о многом говорит. С помощью SVG++ можно дойти вплоть до conforming SVG viewer.
Чтобы я кликнул по кнопке «Посмотрите на наши офигительные предложения», я должен очень-очень доверять отправителю сего письма. Но я, конечно, не такой умный как маркетологи Амазона.
Обосновать можете?
Во-вторых, сейчас можно писать return std::make_tuple{10, 20, 30} или std::tie{i, j, k}, что, конечно, ужас-ужас-ужас по сравнению с предложенными вами вариантами. Но, с другой стороны, нам — плюсистам за это доплачивают.
Threading
Tuple types
Hash tables
Regular expressions
Smart pointers
Random number
Wrapper reference
Polymorphic wrappers for function objects
Type traits for metaprogramming
Что из этого вы бы предложили заменить простым и понятным кодом в компиляторе?
Насчет Boost. SVG++ — header-only library, то есть достаточно распаковать Boost и добавить его в include paths, билдить ничего из буста не надо.
Кстати, сразу возникает два варианта: 1) загружать SVG в промежуточные структуры, например DOM, это дает scripting и анимацию, но значительный оверхэд и сложнее реализация; 2) отрисовывать сразу в процессе чтения — проще код, меньше оверхэд по памяти.