Jak zdefiniować mocne typy identyfikatorów w C++ 11? Możliwe jest wykonywanie aliasów z typami całkowitymi, ale otrzymywanie ostrzeżeń od kompilatora podczas mieszania typów?Jak zdefiniować mocne typy identyfikatorów w C++ 11?
Np:
using monsterID = int;
using weaponID = int;
auto dragon = monsterID{1};
auto sword = weaponID{1};
dragon = sword; // I want a compiler warning here!!
if(dragon == sword){ // also I want a compiler warning here!!
// you should not mix weapons with monsters!!!
}
Nie można tego zrobić z typedefs. Twórz nowe typy. Coś jest w Boost IIRC. –
http://stackoverflow.com/q/18251447/560648 –
zainteresowania jest proponowana nowa funkcja dla C++ 1r: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ 2013/n3515.pdf –