//#(execute) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/hhGo46z5a
#include <iostream> // ostream
#include <format> // format, vformat, make_format_args
using std::ostream;
class Value {
protected: // nicht öffentlich, nur für den eigenen und abgeleiteten Gebrauch
int value_;
const std::string fmt_; // z. B. "{:02}" oder "{:04}"
Value(int v, unsigned w) // Konstruktor mit zwei Argumenten
: value_{v}, fmt_{std::format("{{:0{}}}", w)} {}
public:
ostream& print(ostream& os) const;
};
ostream& operator<<(ostream& os, const Value& rechts) {
return rechts.print(os);
}
ostream& Value::print(ostream& os) const {
return os << std::vformat(fmt_, std::make_format_args(value_));
}