C ++ 11中std :: is_base_of的逻辑

时间:2016-05-04 15:17:26

标签: c++ c++11 std

在浏览一些C ++概念时,我偶然发现了std :: is_base_of逻辑。

谷歌搜索逻辑产生了下面的代码,但我无法理解它。

有人可以解释一下它的运作方式吗?

myClassElements = [ x for x in itemList if isinstance(x,MyClass) ]
if len(myClassElements) > 2:
   ...do something

1 个答案:

答案 0 :(得分:1)

BD的基类时,调用Test(static_cast<D*>(0))会解析为Yes Test(B*)。否则,它会解析为No Test(...)

如果BD的基类,则sizeof(Test(static_cast<D*>(0)))的值为sizeof(Yes)。否则,它等于sizeof(No)

YesNo的定义使sizeof(Yes)永远不会等于sizeof(No)

如果BD的基类,

sizeof(Test(static_cast<D*>(0))) == sizeof(Yes)

评估为true。否则评估为false