diff --git a/modules/juce_core/text/juce_CharPointer_ASCII.h b/modules/juce_core/text/juce_CharPointer_ASCII.h index c62f108a4380..41165ddc2e49 100644 --- a/modules/juce_core/text/juce_CharPointer_ASCII.h +++ b/modules/juce_core/text/juce_CharPointer_ASCII.h @@ -51,6 +51,13 @@ class CharPointer_ASCII final public: using CharType = char; + // Standard iterator traits for compatibility with STL algorithms + using difference_type = std::ptrdiff_t; + using value_type = juce_wchar; + using pointer = juce_wchar*; + using reference = juce_wchar; // Returns by value since operator*() decodes to juce_wchar + using iterator_category = std::input_iterator_tag; + explicit CharPointer_ASCII (const CharType* rawPointer) noexcept : data (const_cast (rawPointer)) { diff --git a/modules/juce_core/text/juce_CharPointer_UTF16.h b/modules/juce_core/text/juce_CharPointer_UTF16.h index 457fa7259885..fbae6b697ab4 100644 --- a/modules/juce_core/text/juce_CharPointer_UTF16.h +++ b/modules/juce_core/text/juce_CharPointer_UTF16.h @@ -52,6 +52,13 @@ class CharPointer_UTF16 final using CharType = int16; #endif + // Standard iterator traits for compatibility with STL algorithms + using difference_type = std::ptrdiff_t; + using value_type = juce_wchar; + using pointer = juce_wchar*; + using reference = juce_wchar; // Returns by value since this is a proxy iterator + using iterator_category = std::input_iterator_tag; + explicit CharPointer_UTF16 (const CharType* rawPointer) noexcept : data (const_cast (rawPointer)) { diff --git a/modules/juce_core/text/juce_CharPointer_UTF32.h b/modules/juce_core/text/juce_CharPointer_UTF32.h index 2eabf0b12c93..0e945f94d93f 100644 --- a/modules/juce_core/text/juce_CharPointer_UTF32.h +++ b/modules/juce_core/text/juce_CharPointer_UTF32.h @@ -48,6 +48,13 @@ class CharPointer_UTF32 final public: using CharType = juce_wchar; + // Standard iterator traits for compatibility with STL algorithms + using difference_type = std::ptrdiff_t; + using value_type = juce_wchar; + using pointer = juce_wchar*; + using reference = juce_wchar; // Returns by value for consistency across CharPointer types + using iterator_category = std::input_iterator_tag; + explicit CharPointer_UTF32 (const CharType* rawPointer) noexcept : data (const_cast (rawPointer)) { diff --git a/modules/juce_core/text/juce_CharPointer_UTF8.h b/modules/juce_core/text/juce_CharPointer_UTF8.h index a13ff2cb7b0f..2d98b8d9c408 100644 --- a/modules/juce_core/text/juce_CharPointer_UTF8.h +++ b/modules/juce_core/text/juce_CharPointer_UTF8.h @@ -48,6 +48,13 @@ class CharPointer_UTF8 final public: using CharType = char; + // Standard iterator traits for compatibility with STL algorithms + using value_type = juce_wchar; + using pointer = juce_wchar*; + using reference = juce_wchar; // Note: returns by value since this is a proxy iterator + using iterator_category = std::input_iterator_tag; + using difference_type = std::ptrdiff_t; + explicit CharPointer_UTF8 (const CharType* rawPointer) noexcept : data (const_cast (rawPointer)) {