It\'s not a syntax I\'m familiar with, but I saw it in another question, an example being:
template<> struct Allowed { };
You might just say it is just the required syntax.
The normal syntax would be template< typename T > struct Allowed;
Because we know that in this case T is std::string there is nothing to put inside the angled brackets but the word template and the angled brackets are still required because writing
struct Allowed on its own would not imply that you are specializing the template but simply that you are instantiating one with std::string as the type. (The word "struct" is not necessary to do that but is still permitted).