static_assert可以检查一个类型是否是向量吗?也就是说,int
会提出断言,而vector<int>
不会。
我在想一些类似的东西:
static_assert(decltype(T) == std::vector, "Some error")
发布于 2011-08-05 17:19:08
是。考虑下面的meta函数:
#include <stdio.h>
#include <vector>
template <class N>
struct is_vector { static const int value = 0; };
template <class N, class A>
struct is_vector<std::vector<N, A> > { static const int value = 1; };
int main()
{
printf("is_vector<int>: %d\n", is_vector<int>::value);
printf("is_vector<vector<int> >: %d\n", is_vector<std::vector<int> >::value);
}
只需将其用作static_assert
中的表达式即可。
发布于 2011-08-06 14:59:51
c++0x:
static_assert(std::is_same<T, std::vector<int>>::value, "Some Error");
https://stackoverflow.com/questions/6953969
复制相似问题