********************************************** Regular Literal Strings for Erbsland Core APIs ********************************************** :Rule ID: ``regular_string_literal`` :Severity: medium At many locations, regular string literals are used for APIs that take a ``String`` argument instead of an Erbsland Core string literal (``""_el``). This looks like a minor issue, but it has a significant performance and memory impact. Regular string literals **always cause a copy of the text**, while Erbsland Core string literals are used as no-copy references to read-only memory. They avoid both the copy and a heap allocation. This is especially important when throwing exceptions or comparing against static text values. Scope and Exceptions ==================== In headers and templates, a ``throw...Error(std::string_view text)`` wrapper is accepted if using the Erbsland Core string types would add an unnecessary include dependency to the public API. Files with ``Windows`` or ``Posix`` in their names are centrally excluded from this rule because they primarily contain native API integration code where narrow C strings are expected. These files still require manual inspection. Plain narrow literals are also correct inside ``static_assert`` and ``assert`` expressions and as messages in the standard ``deprecated`` attribute. Correct Solution ================ * Add ``using namespace text::literal;`` inside the primary namespace bracket of a ``cpp`` file. * In ``hpp`` and template files, add the using directive inside the function. In ``impl`` namespaces, it can be added directly to the namespace, as in ``cpp`` files. * Add the ``_el`` suffix to all string literals where possible. * An explicit direct construction, such as ``StringLiteral{"text"}``, ``U8StringLiteral{"text"}``, or another type that deliberately accepts a C string, is also valid and does not require an ``_el`` suffix. Mechanical Detection ==================== The scanner reports likely unsuffixed narrow string literals. Inspect each reported location manually.