std::collate::~collate(3)

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

πŸ’– NAME πŸ’–

okay so this is std::collate::~collate β€” literally std::collate::~collate, the destructor of the std::collate facet, bestie. We’re in the C++ Standard Libary manual, page std::collate::~collate(3). (Yes, β€œLibary” is exactly how it’s spelled up in the header 😭 keep it.)

✨ Synopsis ✨

Defined in header <locale> πŸŽ€

protected: ~collate();

Destructs a std::collate facet. This destructor is protected and virtual (due to base class destructor being virtual), iykyk. An object of type std::collate, like most facets, can only be destroyed when the last std::locale object that implements this facet goes out of scope β€” or if a user-defined class is derived from std::collate and implements a public destructor. That’s the whole destruction lore, no cap. πŸ’…

πŸŽ€ Example πŸŽ€

Here’s the example, copied exactly because we do not mess with code, periodt:

// Run this code

#include <iostream>
#include <locale>

struct Destructible_collate : public std::collate<wchar_t>
{
    Destructible_collate(std::size_t refs = 0) : collate(refs) {}
    // note: the implicit destructor is public
};

int main()
{
    Destructible_collate dc;
    // std::collate<wchar_t> c; // compile error: protected destructor
}

okay bye bestie 🫢 this iconic little page came from http://cppreference.com and it’s dated 2024.06.10 β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from