Nakładka na C, coraz bardziej się rozbudowuje ;)
struct LabelOptions {
int fontSize = 12;
std::string anchor = "middle";
std::string color = "black";
};
void addLabel(int x, int y, const std::string& text, const LabelOptions& opts = {}) {
std::cout << "x=" << x << " y=" << y << " text=" << text
<< " fontSize=" << opts.fontSize
<< " anchor=" << opts.anchor
<< " color=" << opts.color << "\n";
}
addLabel(100, 200, "Hello"); // używa domyślnych wartości
addLabel(100, 200, "Hello", {16, "end", "red"}); // nadpisuje wszystkie
addLabel(100, 200, "Hello", {.anchor="end"}); // C++20: designated initializers
Normalnie wyścig zbrojeń z JS. Wiem, wiem język to biblioteki, a nie podstawowa składania. Ale już niekonieczna jest przemyślana kolejność argumentów.