This technique can also be applied elsewhere, such as for sf::Color. It's not very clean, but if your lazy, what do you expect? :PI consider it clean enough. The signature of functions are clearly defined, there's no need to reapt the type explicitly again. It might lose some verbosity, but I don't see that as an issue. The code will for sure start to look cleaner.