Friday, September 13, 2024

getting size_t literals to work pre-C++23

In order to get size_t literals to work post-C++98 but pre-C++23, use this almost-portable definition:

#if defined __CLION_IDE__ || !(defined __cpp_size_t_suffix || \
    defined _MSC_VER && _MSVC_LANG < 202004)
#ifdef _MSC_VER
#pragma system_header
#else
#pragma GCC system_header
#endif
consteval auto operator""uz(unsigned long long int x) { return ::floormat::size_t(x); }
#endif