给定
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");