我有下面的代碼:的dynamic_cast衍生模板較少CV-合格的指針
struct Base
{
virtual ~Base(){};
};
template<class T>
struct Derived : public Base
{};
int main()
{
Derived<int> d;
Base *pD = &d;
if(dynamic_cast<Derived<const int>*>(pD))
{
std::cout << "const" << std::endl;
}
if(dynamic_cast<Derived<int>*>(pD))
{
std::cout << "non-const" << std::endl;
}
}
我希望雙方dynamic_casts返回一個有效的指針,因爲新類型較少CV-合格。任何人都可以向我解釋我錯過了什麼嗎?給定Base
指針,有什麼辦法可以識別Derived<XYZ>
忽略cv限定符嗎?
我不太看怎麼'東西'是'什麼<常量sometype。這時候>'如此不同?我的印象是,const在編譯過程中被強制執行,並且基本上都是在執行之後。爲什麼動態轉換的運行時檢查仍然區分2? –
Araex