diff --git a/cpp/ql/lib/change-notes/2026-10-29-stl-containers.md b/cpp/ql/lib/change-notes/2026-10-29-stl-containers.md
new file mode 100644
index 000000000000..d682de29dc66
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2026-10-29-stl-containers.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Dataflow through STL containers are now tracked more precisely.
\ No newline at end of file
diff --git a/cpp/ql/lib/ext/azure.core.model.yml b/cpp/ql/lib/ext/azure.core.model.yml
index 7c5280b0f180..48ca4a9e6f76 100644
--- a/cpp/ql/lib/ext/azure.core.model.yml
+++ b/cpp/ql/lib/ext/azure.core.model.yml
@@ -3,11 +3,11 @@ extensions:
pack: codeql/cpp-all
extensible: sourceModel
data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance
- - ["Azure::Core::Http", "RawResponse", True, "GetHeaders", "", "", "ReturnValue[*]", "remote", "manual"]
+ - ["Azure::Core::Http", "RawResponse", True, "GetHeaders", "", "", "ReturnValue[*].Element.Field[std::pair::second]", "remote", "manual"]
- ["Azure::Core::Http", "RawResponse", True, "GetBody", "", "", "ReturnValue[*]", "remote", "manual"]
- ["Azure::Core::Http", "RawResponse", True, "ExtractBodyStream", "", "", "ReturnValue[*]", "remote", "manual"]
- - ["Azure::Core::Http", "Request", True, "GetHeaders", "", "", "ReturnValue", "remote", "manual"]
- - ["Azure::Core::Http", "Request", True, "GetHeader", "", "", "ReturnValue", "remote", "manual"]
+ - ["Azure::Core::Http", "Request", True, "GetHeaders", "", "", "ReturnValue.Element.Field[std::pair::second]", "remote", "manual"]
+ - ["Azure::Core::Http", "Request", True, "GetHeader", "", "", "ReturnValue.Field[Azure::Nullable::m_value]", "remote", "manual"]
- ["Azure::Core::Http", "Request", True, "GetBodyStream", "", "", "ReturnValue[*]", "remote", "manual"]
- addsTo:
@@ -19,13 +19,13 @@ extensions:
- ["Azure::Core", "Url", True, "SetHost", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetPort", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- - ["Azure::Core", "Url", True, "SetQueryParameters", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
+ - ["Azure::Core", "Url", True, "SetQueryParameters", "", "", "Argument[0].Element.Field[std::pair::second]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "AppendPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "AppendQueryParameter", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetHost", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetPath", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetPort", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- - ["Azure::Core", "Url", True, "GetQueryParameters", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["Azure::Core", "Url", True, "GetQueryParameters", "", "", "Argument[-1]", "ReturnValue.Element.Field[std::pair::second]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetScheme", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetRelativeUrl", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetAbsoluteUrl", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
@@ -34,8 +34,8 @@ extensions:
- ["Azure::Core::IO", "BodyStream", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"]
- ["Azure::Core::IO", "BodyStream", True, "ReadToCount", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"]
- ["Azure::Core::IO", "BodyStream", True, "ReadToEnd", "", "", "Argument[-1]", "ReturnValue.Element", "taint", "manual"]
- - ["Azure", "Nullable", True, "Nullable", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
+ - ["Azure", "Nullable", True, "Nullable", "", "", "Argument[@0]", "Argument[-1].Field[@Azure::Nullable::m_value]", "value", "manual"]
- ["Azure", "Nullable", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
- - ["Azure", "Nullable", True, "Value", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- - ["Azure", "Nullable", True, "operator->", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- - ["Azure", "Nullable", True, "operator*", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
\ No newline at end of file
+ - ["Azure", "Nullable", True, "Value", "", "", "Argument[-1].Field[@Azure::Nullable::m_value]", "ReturnValue[*@]", "value", "manual"]
+ - ["Azure", "Nullable", True, "operator->", "", "", "Argument[-1].Field[@Azure::Nullable::m_value]", "ReturnValue[*@]", "value", "manual"]
+ - ["Azure", "Nullable", True, "operator*", "", "", "Argument[-1].Field[@Azure::Nullable::m_value]", "ReturnValue[*@]", "value", "manual"]
\ No newline at end of file
diff --git a/cpp/ql/lib/ext/bsl.map.model.yml b/cpp/ql/lib/ext/bsl.map.model.yml
new file mode 100644
index 000000000000..a5b5ba7df358
--- /dev/null
+++ b/cpp/ql/lib/ext/bsl.map.model.yml
@@ -0,0 +1,125 @@
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
+ - ["bsl", "map", True, "at", "", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue[*@]", "value", "manual"]
+ - ["bsl", "map", True, "at", "", "", "ReturnValue[*@]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "begin", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "cbegin", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "rbegin", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "crbegin", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "emplace", "", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "emplace", "", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "emplace_hint", "", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "emplace_hint", "", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "erase", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "equal_range", "", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first,bsl::pair::second].Element", "value", "manual"]
+ - ["bsl", "map", True, "find", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const value_type &)", "", "Argument[*0]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const value_type &)", "", "Argument[*0]", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const value_type &)", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(value_type &&)", "", "Argument[*0]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(value_type &&)", "", "Argument[*0]", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(value_type &&)", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert
", "(P &&)", "", "Argument[*0]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert
", "(P &&)", "", "Argument[*0]", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert
", "(P &&)", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,const value_type &)", "", "Argument[*1]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,const value_type &)", "", "Argument[*1]", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,const value_type &)", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(InputIt,InputIt)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(initializer_list)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,value_type &&)", "", "Argument[*1]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,value_type &&)", "", "Argument[*1]", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,value_type &&)", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert", "(const_iterator,P &&)", "", "Argument[*1]", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "insert
", "(const_iterator,P &&)", "", "Argument[*1]", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert
", "(const_iterator,P &&)", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "insert_range", "(R &&)", "", "Argument[*0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "lower_bound", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "upper_bound", "", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(const map &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "map", "(map &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "map", "(initializer_list)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(const map &,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "map", "(map &&,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "map", "(initializer_list,const Compare &)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(initializer_list,const Compare &,const Allocator &)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(initializer_list,const Allocator &)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(InputIt,InputIt)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(InputIt,InputIt,const Compare &)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "map", "(InputIt,InputIt,const Compare &,const Allocator &)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "merge", "(map &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "merge", "(map &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "merge", "(multimap &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "merge", "(multimap &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(initializer_list)", "", "Argument[0].Element", "Argument[-1].Element", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(initializer_list)", "", "Argument[0].Element", "ReturnValue[*].Element", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(const map &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(const map &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(map &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "map", True, "operator=", "(map &&)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(const key_type &)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue[*@]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(const key_type &)", "", "ReturnValue[*@]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(const key_type &)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(key_type &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue[*@]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(key_type &&)", "", "ReturnValue[*@]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(key_type &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(K &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue[*@]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(K &&)", "", "ReturnValue[*@]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "operator[]", "(K &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[*@0]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const key_type &,M &&)", "", "Argument[*@1]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[*@0]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(key_type &&,M &&)", "", "Argument[*@1]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[*@2]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[*@1]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,const key_type &,M &&)", "", "Argument[*@2]", "ReturnValue.Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[*@2]", "Argument[-1].Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::first]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[-1].Element.Field[@bsl::pair::second]", "ReturnValue.Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[*@1]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "insert_or_assign", "(const_iterator,key_type &&,M &&)", "", "Argument[*@2]", "ReturnValue.Element.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const key_type &,Args &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const key_type &,Args &&)", "", "Argument[*@0]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const key_type &,Args &&)", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(key_type &&,Args &&)", "", "Argument[*@0]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(key_type &&,Args &&)", "", "Argument[*@0]", "ReturnValue.Field[bsl::pair::first].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(key_type &&,Args &&)", "", "Argument[-1].Element", "ReturnValue.Field[bsl::pair::first].Element", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,const key_type &,Args &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,const key_type &,Args &&)", "", "Argument[*@1]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,const key_type &,Args &&)", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,key_type &&,Args &&)", "", "Argument[*@1]", "Argument[-1].Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,key_type &&,Args &&)", "", "Argument[*@1]", "ReturnValue.Element.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,key_type &&,Args &&)", "", "Argument[-1].Element", "ReturnValue.Element", "value", "manual"]
+ - ["bsl", "map", True, "swap", "", "", "Argument[-1]", "Argument[*0]", "value", "manual"]
+ - ["bsl", "map", True, "swap", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: forwardsModel
+ data: # namespace, type, subtypes, name, signature, ext, start, constructor, output, provenance
+ - ["bsl", "map", True, "emplace", "(Args &&)", "", "0", "value_type", "Argument[-1].Element", "manual"]
+ - ["bsl", "map", True, "emplace", "(Args &&)", "", "0", "value_type", "ReturnValue.Field[bsl::pair::first].Element", "manual"]
+ - ["bsl", "map", True, "emplace_hint", "(const_iterator,Args &&)", "", "1", "value_type", "Argument[-1].Element", "manual"]
+ - ["bsl", "map", True, "emplace_hint", "(const_iterator,Args &&)", "", "1", "value_type", "ReturnValue.Element", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const Key &,Args &&)", "", "1", "T", "Argument[-1].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const Key &,Args &&)", "", "1", "T", "ReturnValue.Field[bsl::pair::first].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(Key &&,Args &&)", "", "1", "T", "Argument[-1].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(Key &&,Args &&)", "", "1", "T", "ReturnValue.Field[bsl::pair::first].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,Key &&,Args &&)", "", "2", "T", "Argument[-1].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,Key &&,Args &&)", "", "2", "T", "ReturnValue.Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,const Key &,Args &&)", "", "2", "T", "Argument[-1].Element.Field[bsl::pair::second]", "manual"]
+ - ["bsl", "map", True, "try_emplace", "(const_iterator,const Key &,Args &&)", "", "2", "T", "ReturnValue.Element.Field[bsl::pair::second]", "manual"]
\ No newline at end of file
diff --git a/cpp/ql/lib/ext/bsl.pair.model.yml b/cpp/ql/lib/ext/bsl.pair.model.yml
new file mode 100644
index 000000000000..9b8c9afee090
--- /dev/null
+++ b/cpp/ql/lib/ext/bsl.pair.model.yml
@@ -0,0 +1,21 @@
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
+ - ["bsl", "", False, "make_pair", "(T1 &&,T2 &&)", "", "Argument[*@0]", "ReturnValue.Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "", False, "make_pair", "(T1 &&,T2 &&)", "", "Argument[*@1]", "ReturnValue.Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "pair", True, "operator=", "(const pair &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "pair", True, "operator=", "(const pair &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "pair", True, "operator=", "(pair &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "pair", True, "operator=", "(pair &&)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(const pair &)", "", "Argument[*0].Field[@bsl::pair::first]", "Argument[-1].Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(const pair &)", "", "Argument[*0].Field[@bsl::pair::second]", "Argument[-1].Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(pair &&)", "", "Argument[*0].Field[@bsl::pair::first]", "Argument[-1].Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(pair &&)", "", "Argument[*0].Field[@bsl::pair::second]", "Argument[-1].Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(const T1 &,const T2 &)", "", "Argument[*@0]", "Argument[-1].Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(const T1 &,const T2 &)", "", "Argument[*@1]", "Argument[-1].Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(U1 &&,U2 &&)", "", "Argument[*@0]", "Argument[-1].Field[@bsl::pair::first]", "value", "manual"]
+ - ["bsl", "pair", True, "pair", "(U1 &&,U2 &&)", "", "Argument[*@1]", "Argument[-1].Field[@bsl::pair::second]", "value", "manual"]
+ - ["bsl", "pair", True, "swap", "", "", "Argument[-1]", "Argument[*0]", "value", "manual"]
+ - ["bsl", "pair", True, "swap", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
\ No newline at end of file
diff --git a/cpp/ql/lib/ext/bsl.string.model.yml b/cpp/ql/lib/ext/bsl.string.model.yml
new file mode 100644
index 000000000000..b8d00e3fc7cc
--- /dev/null
+++ b/cpp/ql/lib/ext/bsl.string.model.yml
@@ -0,0 +1,194 @@
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
+ - ["bsl", "basic_string", True, "basic_string", "(size_type,CharT,const Allocator &)", "", "Argument[1]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(InputIt,InputIt,const Allocator &)", "", "Argument[0..1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const CharT *,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const CharT *,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const StringViewLike &,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const StringViewLike &,size_type,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const basic_string &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(basic_string &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const basic_string &,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(basic_string &&,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const basic_string &,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(basic_string &&,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(const basic_string &,size_type,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "basic_string", "(basic_string &&,size_type,size_type,const Allocator &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "operator=", "", "", "Argument[0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "operator=", "", "", "Argument[0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "operator=", "", "", "ReturnValue[*]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const basic_string &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const basic_string &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(basic_string &&)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(basic_string &&)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(size_type,CharT)", "", "Argument[1]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(size_type,CharT)", "", "Argument[1]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const CharT *,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const CharT *,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const CharT *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const CharT *)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const basic_string &,size_type,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const basic_string &,size_type,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const StringViewLike &)", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const StringViewLike &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const StringViewLike &,size_type,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(const StringViewLike &,size_type,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(InputIt,InputIt)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "(InputIt,InputIt)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "assign", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "at", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "at", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator[]", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator[]", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "front", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "front", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "back", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "back", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "data", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "data", "", "", "ReturnValue[*]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "c_str", "", "", "Argument[-1]", "ReturnValue[*]", "value", "manual"]
+ - ["bsl", "basic_string", True, "begin", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "cbegin", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "rbegin", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "crbegin", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "end", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "cend", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "rend", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "crend", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,size_type,CharT)", "", "Argument[2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,size_type,CharT)", "", "Argument[2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,size_type,CharT)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *,size_type)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *,size_type)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const CharT *,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &,size_type,size_type)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &,size_type,size_type)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const basic_string &,size_type,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const StringViewLike &)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const StringViewLike &)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const StringViewLike &,size_type,size_type)", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(size_type,const StringViewLike &,size_type,size_type)", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,CharT)", "", "Argument[1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,CharT)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,CharT)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,CharT)", "", "Argument[1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,CharT)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,CharT)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,size_type,CharT)", "", "Argument[2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,size_type,CharT)", "", "Argument[2]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,size_type,CharT)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,size_type,CharT)", "", "Argument[2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,size_type,CharT)", "", "Argument[2]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,size_type,CharT)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,InputIt,InputIt)", "", "Argument[1..2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,InputIt,InputIt)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(iterator,InputIt,InputIt)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,InputIt,InputIt)", "", "Argument[1..2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,InputIt,InputIt)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "insert", "(const_iterator,InputIt,InputIt)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(size_type,CharT)", "", "Argument[1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(size_type,CharT)", "", "Argument[1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(size_type,CharT)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const CharT *)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &,size_type,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &,size_type,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const basic_string &,size_type,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const StringViewLike &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const StringViewLike &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const StringViewLike &,size_type,size_type)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(const StringViewLike &,size_type,size_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(InputIt,InputIt)", "", "Argument[0..1]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(InputIt,InputIt)", "", "Argument[0..1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "(InputIt,InputIt)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "append", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const basic_string &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const basic_string &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const basic_string &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const StringViewLike &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const StringViewLike &)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const StringViewLike &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(CharT)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(CharT)", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(CharT)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const CharT *)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const CharT *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "(const CharT *)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "operator+=", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const basic_string &)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const basic_string &)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const basic_string &)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &,size_type,size_type)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &,size_type,size_type)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const basic_string &,size_type,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const StringViewLike &)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const StringViewLike &)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const StringViewLike &)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const StringViewLike &)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const StringViewLike &,size_type,size_type)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const StringViewLike &,size_type,size_type)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *,size_type)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *,size_type)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *,size_type)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *,size_type)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *,size_type)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,const CharT *)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *)", "", "Argument[*2]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *)", "", "Argument[*2]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,const CharT *)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,size_type,CharT)", "", "Argument[3]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,size_type,CharT)", "", "Argument[3]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(size_type,size_type,size_type,CharT)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,size_type,CharT)", "", "Argument[3]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,size_type,CharT)", "", "Argument[3]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,size_type,CharT)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,InputIt,InputIt)", "", "Argument[2..3]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,InputIt,InputIt)", "", "Argument[2..3]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "(const_iterator,const_iterator,InputIt,InputIt)", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "replace", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "substr", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "basic_string", True, "push_back", "(CharT)", "", "Argument[0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "copy", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"]
+ - ["bsl", "basic_string", True, "swap", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
+ - ["bsl", "basic_string", True, "swap", "", "", "Argument[-1]", "Argument[*0]", "value", "manual"]
+ - ["bsl", "", False, "operator+", "(const basic_string &,const basic_string &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(basic_string &&,basic_string &&)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(const basic_string &,basic_string &&)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(basic_string &&,const basic_string &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(const basic_string &,const CharT *)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(basic_string &&,const CharT *)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(const basic_string &,CharT)", "", "Argument[*0]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(basic_string &&,CharT)", "", "Argument[*0]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+", "(const basic_string &,CharT)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
+ - ["bsl", "", False, "operator+