禁用某些构造函数
有时候我们希望用更明确的自定义类型取代一些 primitives,依靠类型系统来减少一些人为错误:
1 | void Run(WithMultithreading mt, WithAdvancedMode advanced); |
类型 WithMultithraeding
和 WithAdvancedMode
用起来很像 bool
,但是他们是两个不同的类型,混用会出现编译错误。
1 | Run(mode, mt); // compile failure; type mis-match |
不管我们使用 typedef
还是 using
,都只能定义 bool
的类型别名;在类型系统看来他们还是一回事。