Traits:类型的else-if-then机制
简单来说,traits的重要性就在于能在编译时间(compile-time)通过类型(type)确定函数的调用,尽管我们往往习惯于在运行时间(run-time)通过值(value)来确定【traits是类型驱动(type-driven),依照具体的类型产生相应的模板类或模板函数,而比如多态则是在运行时间通过值来确定调用函数的,会付出性能上的代价】。更妙的是,traits能让您根据其产生环境(context)作出类型判定,使得代码更清晰可读,更易于维护,这正应了那句曾解决了软件工程界无数难题的名言──“extra level of indirection(额外的中间层)”。如果正确使用traits,我们在享受上述好处的同时,亦不必付出性能、安全及耦合性等方面的代价。
下面我们来看一下传说中的else-if-then 如下图所示
下面举一个函数模板的例子
现在就可以安全放心的使用FetchField函数了,如果还有别的类型,我们还可以特化处理。
参考C++VIEW