title: Can attributes be applied to templates?
body: <p>Does the C++ standard allow setting attributes on template declarations? For example:</p>
  
  <pre><code>[[attr1]] template &lt;typename T [[attr2]] &gt; [[attr3]]
  class [[attr4]] C {};
  </code></pre>
  
  <p>I believe <code>attr4</code> would be considered a valid attribute for the template instances (i.e., it would be an attribute on <code>T&lt;int&gt;</code> and <code>T&lt;char&gt;</code>, for example).</p>
  
  <p>However would either <code>attr1</code> or <code>attr3</code> be considered valid by the compiler (even if it would be ignored)?</p>
  
  <p>Would <code>attr2</code> also be valid? I think not, but I'm not sure. The issue would be if it "adds" an attribute to a given type used in instantiation, but IIRC currently template parameters have all attributes ignored.</p>
  
  <p>My interest in <code>attr1</code> and/or <code>attr3</code> is for a custom test DSL, where a given attribute on a template would automatically force instantiation of the class with a given set of types.</p>