给定

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

09-10 01:00
查看更多