C++ 检查模板参数是否为某种类型的chrono::duration
给定C++ 检查模板参数是否为某种类型的chrono::duration,c++,c++11,C++,C++11,给定 模板 结构时间数据 { T持续时间; } 如果T是某种类型的std::chrono::duration,如何编写static\u assert来检查编译时?记住std::chrono::duration是一个模板类 换句话说,如何检查类型是否是模板类的某个实例化?您可以实现自己的类型特征来检查chrono::duration。大概是这样的: template<class T> struct TimeData { T duration; } 模板 结构是_duration
模板
结构时间数据
{
T持续时间;
}
如果T
是某种类型的std::chrono::duration
,如何编写static\u assert
来检查编译时?记住std::chrono::duration
是一个模板类
换句话说,如何检查类型是否是模板类的某个实例化?您可以实现自己的类型特征来检查
chrono::duration
。大概是这样的:
template<class T>
struct TimeData
{
T duration;
}
模板
结构是_duration:std::false _type{};
模板
结构是_duration:std::true_type{};
然后你可以:
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_断言(is_duration::value,“必须是duration”);
Username签出
static_assert(is_duration<T>::value, "must be duration");