在下面的代碼中,我試圖檢查作爲第二個模板參數傳遞給WTrajectory
的類的簽名。在當前實現中,WTrajectory
的構造函數將模板參數T
的類型與作爲第二個參數傳遞給它的類型的模板參數進行比較。C++如何在編譯時檢查模板參數類的簽名
當前實現可以執行檢查。但是,如果可能的話,我寧願在編譯時執行它。此外,我還想檢查模板參數TWPoint
是否有編譯時的成員函數returnTimeTypeID
(在運行時執行此檢查的解決方案可以在此處找到:link)。
template<typename T>
struct WPoint
{
const std::type_info& returnTimeTypeID(void) const
{return typeid(T);}
};
template<typename T, typename TWPoint>
struct WTrajectory
{
WTrajectory(const TWPoint& wp)
{
compare_types(wp);
}
void compare_types(const TWPoint& wp)
{
if (typeid(T) != wp.returnTimeTypeID())
throw std::runtime_error("Error");
}
};
你想要檢查什麼?措辭使得你似乎只是想檢查'TWPoint'是'WPoint'? –
Barry