Usual template structs can be specialized, e.g.,
template<typename T>
struct X{};
template<>
struct X<int>{};
C++11 gave us the new cool using syntax for expressing template typedefs:
template<typename T>
using YetAnotherVector = std::vector<T>
Is there a way to define a template specialization for these using constructs similar to specializations for struct templates? I tried the following:
template<>
using YetAnotherVector<int> = AFancyIntVector;
but it yielded a compile error. Is this possible somehow?
No.
But you can define the alias as:
template<typename T>
using YetAnotherVector = typename std::conditional<
                                     std::is_same<T,int>::value, 
                                     AFancyIntVector, 
                                     std::vector<T>
                                     >::type;
Hope that helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With