По сути, ваш вопрос сводится к тому, «имеет ли смысл иметь [свободную библиотеку xyz] в качестве зависимости для проекта с открытым исходным кодом C ++».
Теперь рассмотрим следующую цитату из Страуструпа, и ответ на самом деле нет ничего сложного:
Без хорошей библиотеки наиболее интересные задачи трудно выполнить в C ++; но при наличии хорошей библиотеки почти любую задачу можно облегчить
Если предположить, что это правильно (и, по моему опыту, так), то написать проект C ++ разумного размера без зависимости совершенно неразумны.
Развивая этот аргумент далее, одна зависимость C ++ (кроме системных библиотек), которую можно разумно ожидать в клиентской системе (разработчика), - это библиотеки Boost. Я знаю , что это не так, но это не является необоснованным предположением для программного обеспечения.
Если программное обеспечение не может даже полагаться на Boost, оно не может полагаться на любую библиотеку .
Так как выпуск 18c Компетентные Выражения обеспечивает альтернативный способ определить ценности сложных типов данных. Цитата:
Старт с Oracle Database Release 18c, любая стоимость PL/SQL может быть предоставлена выражением (например, для отчета, или для ассоциативного множества) как конструктор предоставляет абстрактную стоимость типа данных. В PL/SQL мы используем термины, «квалифицировал выражение», и «совокупность», а не термин SQL «печатает конструктора», но функциональность - то же.
Вот рабочий пример:
declare
type a is record (a1 number, a2 number);
type b is table of a index by varchar2 (16);
arr b := b ('key1' => a (1, 2), 'key2' => a (3, 4));
begin
declare key varchar2 (16) := arr.first; begin
<<foreach>> loop
dbms_output.put_line (arr(key).a1||','||arr (key).a2);
key := arr.next (key);
exit foreach when key is null;
end loop; end;
end;
/
PL/SQL procedure successfully completed.
1,2
3,4