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