explicit using declaration
explicit using Uid = std::string;
void foo(Uid uid) {
// ...
};
foo("Hello"); // wrong
foo(Uid{"Hello"}); // ok
explicit using Uid = std::string;
void foo(Uid uid) {
// ...
};
foo("Hello"); // wrong
foo(Uid{"Hello"}); // ok
Иными словами, strong typedef.
Я - за. Такого не хватает в языке.
Можно будет много ошибок избежать и сократить много boilerplate.