C++ keywords: typename
From cppreference.com
                    
                                        
                    
                    
                                                            
                    Usage
- In a template declaration, typename can be used as an alternative to class to declare type template parameters and template template parameters (since C++17).
 - Inside a declaration or a definition of a template, typename can be used to declare that a dependent qualified name is a type.
 - Inside a declaration or a definition of a template, (until C++11) typename can be used before a non-dependent qualified type name. It has no effect in this case.
 - Inside a requirements for type requirements (since C++20)