通過C++ 11標準std::is_base_of<B, D>
必須返回true,如果D從B派生或如果兩者都是相同的非聯合類。但在VC++ 2010中,如果類型B是D類型的唯一基類,則stl實現模板返回true!這是一個錯誤嗎?VC2010執行std :: is_base_of包含錯誤?
在例如部分
std::is_base_of<base, base> == true
http://msdn.microsoft.com/en-us/library/bb982243(v=vs.100).aspx頁面,但這並不符合VC++ 2010 STL實現。儘管它符合C++ 11標準的要求。錯誤在哪裏?
請記住,C++ 11還是相當新的,標準中的許多功能還沒有實現。甚至連VC++ 2012都沒有實現完整的C++ 11。 –
對於VS2010 SP1和VS2012,'std :: is_base_of :: value'評估爲'true'。可能它是SP1之前的錯誤? (我沒有簡單的方法來測試沒有SP1的VS2010)。你能發佈一個可顯示問題的可編譯代碼嗎? –
當然可以。 'static_assert(is_base_of :: value,「無效的std :: is_base_or_same實現」);'總是錯誤的。我的VS 2010版本是「10.0.40219.1 SP1Rel」 –
23W