std::codecv...ways_noconv(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 NAME 🌸

std::codecvt::always_noconv,do_always_noconv - std::codecvt::always_noconv,do_always_noconv

okay bestie, you're on the std::codecv...ways_noconv(3) page from the C++ Standard Libary manual (yes, that's literally how it's spelled up top 🫢). this is the whole always-noconv / do-always-noconv situation, and it's lowkey iconic.


πŸ¦‹ Synopsis πŸ¦‹

Defined in header <locale>

public:                                                 (until C++11)
bool always_noconv() const throw();
public:                                                 (since C++11)
bool always_noconv() const noexcept;            (1)
protected:
(until C++11)
virtual bool do_always_noconv() const throw();      (2)
protected:
(since C++11)
virtual bool do_always_noconv() const noexcept;
  1. Public member function, calls the member function do_always_noconv of the most derived class.
  2. Returns true if both do_in() and do_out() return std::codecvt_base::noconv for all valid inputs.

πŸ’– Return value πŸ’–

true if this conversion facet performs no conversions, false otherwise. simple as that, no cap ✨

The non-converting specialization std::codecvt<char, char, std::mbstate_t> returns true. periodt πŸ’…


✨ Notes ✨

This function may be used e.g. in the implementation of std::basic_filebuf::underflow and std::basic_filebuf::overflow to use bulk character copy instead of calling std::codecvt::in or std::codecvt::out if it is known that the locale imbued in the std::basic_filebuf does not perform any conversions.

like, the vibe check is: if nobody's converting anything, why call the converter? exactly. main character optimization energy πŸ”₯


πŸŽ€ Example πŸŽ€

// Run this code

        #include <iostream>
        #include <locale>

        int main()
        {
            std::cout << "The non-converting char<->char
       codecvt::always_noconv() returns "
                      << std::boolalpha
                      << std::use_facet<std::codecvt<char, char,
       std::mbstate_t>>(
                            std::locale()
                         ).always_noconv() << '\n'
                      << "while wchar_t<->char codecvt::always_noconv() returns
       "
                      << std::use_facet<std::codecvt<wchar_t, char,
       std::mbstate_t>>(
                            std::locale()
                         ).always_noconv() << '\n';
        }

🌈 Output 🌈

        The non-converting char<->char codecvt::always_noconv() returns true
        while wchar_t<->char codecvt::always_noconv() returns false

mwah πŸ’‹ this page came from http://cppreference.com, dated 2024.06.10, and the footer literally says std::codecv...ways_noconv(3). byeee bestie πŸ¦‹πŸ’–

πŸ“¦ where this page comes from