检查模板参数是否是某种类型的chrono :: duration

时间:2017-01-25 11:54:24

标签: c++ c++11

鉴于

template<class T>
struct TimeData
{
  T duration;
}

如果static_assert是某种类型的T,如何编写std::chrono::duration来检查编译时间?请记住std::chrono::duration是模板类。

换句话说,我如何检查类型是否是模板类的实例化?

1 个答案:

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