1
我有兩個類。如何限制C++中的模板參數?
class Item {
};
template <typename ItemType>
class Result {
};
我想實現一個模板,它應該接受項目和結果<項目>作爲它的模板參數(或類似int和結果< int>的)。如果參數不符合要求,則在編譯過程中應報告錯誤。
我所做的:
template <typename ItemType, typename Result>
class Unknown {
public:
Result GetItem() {
Result result;
return result;
}
};
我的問題是,當其他類型作爲參數傳遞,沒有錯誤報告。
// OK
Unknown<Item, Result<Item>> unknown;
Result<Item> result = unknown.GetItem();
// OK
Unknown<Item, SomeOtherResultTemplate<Item>> unknown10;
SomeOtherResultTemplate<Item> result = unknown10.GetItem();
// OK
Unknown<int, Result<int>> unknown;
// Errors should be reported.
Unknown<Item, int> unknown1;
Unknown<Item, Result<int>> unknown2;
Unknown<Item, Result<SomeOtherItem>> unknown3;
Unknown<int, Result<double>> unknown4;
你覺得爲什麼錯誤應報告,其完全可以發送任何類型參數爲模板,如果你想限制參數,你將不得不做一些類型檢查你自己 –