The following code example is taken from the book
C++20 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2021
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <string>
#include <format>
// convert an integral value to a std::string
// - can be called at compile time or runtime
constexpr std::string asString(long long value)
{
if (std::is_constant_evaluated()) {
// compile-time version:
if (value == 0) {
return "0";
}
if (value < 0) {
return "-" + asString(-value);
}
std::string s = asString(value / 10) + std::string(1, value % 10 + '0');
if (s.size() > 1 && s[0] == '0') { // skip leading 0 if there is one
s.erase(0, 1);
}
return s;
}
else {
// runtime version:
return std::format("{}", value);
}
}