1
template<class T>
struct TimeData
{
T duration;
}
我如何寫一個static_assert
在編譯時檢查,如果T
是某種類型的std::chrono::duration
?記住std::chrono::duration
是一個模板類。
換句話說,我該如何檢查一個類型是否是模板類的某個實例?
template<class T>
struct TimeData
{
T duration;
}
我如何寫一個static_assert
在編譯時檢查,如果T
是某種類型的std::chrono::duration
?記住std::chrono::duration
是一個模板類。
換句話說,我該如何檢查一個類型是否是模板類的某個實例?
您可以執行自己的類型特徵來檢查chrono::duration
。事情是這樣的:
template<class T>
struct is_duration : std::false_type {};
template<class Rep, class Period>
struct is_duration<std::chrono::duration<Rep, Period>> : std::true_type {};
然後你可以:
static_assert(is_duration<T>::value, "must be duration");
用戶名簽出 – SingerOfTheFall