The objective is to write a type trait with the following signature:
template<typename T>
struct is_vector : std::true_type / std::false_type
such that you can use is_vector<T>::value in SFINAE signatures. How do I properly detect whether a type is __attribute__((__vector_size(<some_vector_width>)) <some_built-in_type> in GCC/clang?
I looked through the LLVM documentation but couldn't see any built-ins to detect this. The GNU C documentation similarly only documents it as a C extension, not mentioning C++.
The backup plan is to specialize the template for each permutation but that really doesn't sound nice.