Should typename be before or after const in C++?

c++, class, constants, oop, typename

Solution

`typename` is not used like this, so both cases are invalid and should produce a compilation error, like this:

main.cpp:4:20: error: expected a qualified name after 'typename'
    const typename T* x;
                   ^

Here you would need something like `T::myType` to go on.

Or even this, which is worse:

main.cpp:4:14: error: expected a qualified name after 'typename'
    typename const T* x;
             ^
main.cpp:4:14: error: expected member name or ';' after declaration specifiers

Relevant example in expected a qualified name after 'typename'.

The keyword typename was introduced to specify that the identifier that follows is a type

Read more in: Officially, what is typename for?

Problem

Should I write: ``` template<class T> class Foo { typename const T* x; }; ``` or: ``` template<class T> class Foo { const typename T* x; }; ```

Original source

Related problems