繁体   English   中英

检查模板类型是否是 std::array 的任何实例化 [重复]

[英]Check if template type is any instantiation of std::array [duplicate]

我需要一些编译时检查传递给模板化 function 的模板类型是否是std::array的任何实例化

喜欢

IsStdArray<std::array<float, 12>>::value; // should evaluate to true
IsStdArray<std::array<int, 1000>>::value; // should evaluate to true
IsStdArray<std::vector<float>>::value;    // should evaluate to false
IsStdArray<std::string>::value            // should evaluate to false

我特别努力想出任何与数组大小无关的东西。 请注意,返回constexpr bool的 function 也可以作为解决方案!

您可以部分特化特征 class。

template<typename T>
struct IsStdArray : std::false_type {};

template<typename T, std::size_t N>
struct IsStdArray<std::array<T, N>> : std::true_type {};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM