我想要boost::any_cast<T>
僅在any
的類型沒有隱式轉換爲T
時拋出異常。如果any
的類型不是T
,則正常行爲似乎是拋出異常,而不考慮隱式轉換。boost :: any_cast - 僅當隱式轉換不可用時才拋出?
例子:
boost::any a = 1;
boost::any_cast<int>(a); // This succeeds, and rightfully so
boost::any_cast<long>(a); // I don't want this to throw
boost::any_cast<Widget>(a); // I want this to throw
誰能告訴我,如果有一個簡單的方法來得到我想要的功能,或者更好的是給我一個很好的理由,爲什麼現有的行爲是現在這個樣子?
`throw`和`catch`是爲了處理錯誤,而不是圍繞在別人的界面上故意限制。 (我不知道他們在這裏是否有必要/有用,但我知道這個想法/建議在任何情況下都是不好的。)如果有人想要一個隱式轉換的類型擦除容器,那麼他們應該寫他們的擁有。 – 2016-09-27 06:57:27