C++ Logo

std-proposals

Advanced search

Re: [std-proposals] constexpr tolower, toupper, isalpha

From: Frederick Virchanza Gotham <cauldwell.thomas_at_[hidden]>
Date: Thu, 10 Jul 2025 10:12:53 +0100
Would it be out of the question to have constexpr functions something
like the following?

namespace std {

    namespace unicode {

        enum class case_mapping : unsigned {
          common = 1u,
          turkish,
        };

        inline constexpr char32_t tolower( char32_t const c,
case_mapping const m = case_mapping::common ) noexcept
        {
          switch ( m )
          {
          case case_mapping::common:
            return c + 5;
          case case_mapping::turkish:
            return c + 6;
          }
          return '\0'; // suppress compiler warning
        }

    } } // close namespaces std::unicode

    #include <iostream>

    int main(int const arg, char **const argv)
    {
        constexpr char32_t c = std::unicode::tolower('b');

        char32_t c2 = std::unicode::tolower( (char32_t)(unsigned)arg );

        std::cout << (long unsigned)c << std::endl;
        std::cout << (long unsigned)c2 << std::endl;
    }

Received on 2025-07-10 09:13:06