VS2019 explicit specialization requires template<> error with 'using' keyword

Issue

I have this piece of c++ code, and VS2019 to compile it:

#include <iostream>
template<typename t>
class c
{

};

int main(){
    using o = class c<int>;
}

does anybody know why it does not compile, complaining about:

Error   C2906   'c<int>': explicit specialization requires 'template <>'

With mingw-gcc it compiles and runs without error.

Here you can compare compiler outputs: https://godbolt.org/z/55fMzh8qz

Thanks in advance.

Solution

class is unnecessary in the using statement, I think visual studio thinks you are trying to declare a specialisation of c:

template <>
class c<int>;

hence the error message.

All you need is:

using o = c<int>;

Answered By – Alan Birtles

Answer Checked By – Cary Denson (AngularFixing Admin)

Leave a Reply

Your email address will not be published.