C++中是否存在嚴格typedef的習慣用法,可能使用模板?C++中嚴格typedef的成語
喜歡的東西:
template <class base_type, int N> struct new_type{
base_type p;
explicit new_type(base_type i = base_type()) : p(i) {}
};
typedef new_type<int, __LINE__> x_coordinate;
typedef new_type<int, __LINE__> y_coordinate;
所以我可以做這樣的一個編譯時錯誤:
x_coordinate x(5);
y_coordinate y(6);
x = y; // whoops
中的__LINE__
那裏看起來可能很麻煩,但我寧願不必須手動創建一組常量來保持每種類型的唯一性。
座標是不是這是一個非常好的應用。兩個座標的乘積不是座標等。您可能想要查看Boost.Units。 – 2013-02-21 15:40:06
我刪除了我的答案,其中提示[BOOST_STRONG_TYPEDEF](http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/strong_typedef.html),因爲它顯然適用於重載分辨率,但不會生成編譯錯誤交叉分配。 – Angew 2013-02-21 15:42:24
我質疑你想做什麼的價值。例如,當你想要執行旋轉時會發生什麼? 'x = sin(theta)* y + cos(theta)* x'應該是完全有效的。 – 2013-02-21 16:46:38