An annotation may be applied
to a base-specifier or
to any declaration of a
type,
type alias,
variable,
function,
namespace,
enumerator, or
non-static data member.
[Example 2: template<class T>[[=T::type()]]void f(T t);
void f(int);
void g(){
f(0); // OK
f('0'); // error, substituting into the annotation results in an invalid expression} — end example]