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

Chr*_*ger 2 c++ c++11

特定

template<class T>
struct TimeData
{
  T duration;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dei*_*Dei 10

您可以实现自己的类型特征来检查a 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 {};
Run Code Online (Sandbox Code Playgroud)

然后你可以:

static_assert(is_duration<T>::value, "must be duration");
Run Code Online (Sandbox Code Playgroud)