今天不知何故,一个意外神游到is_base_of的原代码处,发现了一个以前从没碰上的匹配顺序的情况,貌似C++的书里都没提到过这种情况,也可能是自己看书不认真,哈哈。Whatever,确实是一个很tricky的东西,就在这里小记一下吧。
is_base_of以两个类型作为模板参数,然后用模板里定义的value来说明前一个是否后一个的基类,当然,如果这两个的类型完全相同,那么value的值也是真。是非常典型的模板trait。下面代码是自己写的一个缩简版,仅供说明问题:
- #include <iostream>
- using namespace std;
- template <typename T1, typename T2>
- struct is_same
- {
- static const bool value =