鉴于
template<class T>
struct TimeData
{
T duration;
}
如果static_assert
是某种类型的T
,如何编写std::chrono::duration
来检查编译时间?请记住std::chrono::duration
是模板类。
换句话说,我如何检查类型是否是模板类的实例化?
答案 0 :(得分:9)
您可以实施自己的类型特征来检查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");