<p>A <em>metafunction class</em> is a certain form of metafunction representation
that enables higher-order metaprogramming. More precisely, it's a class
with a publicly-accessible nested <aclass="reference"href="./metafunction.html">Metafunction</a> called <ttclass="literal"><spanclass="pre"><ahref="./apply.html"class="identifier">apply</a></span></tt>.
Correspondingly, a metafunction class invocation is defined as invocation
of its nested <ttclass="literal"><spanclass="pre"><ahref="./apply.html"class="identifier">apply</a></span></tt> metafunction.</p>
<p>In the following table and subsequent specifications, <ttclass="literal"><spanclass="pre">f</span></tt> is a <aclass="reference"href="./metafunction-class.html">Metafunction Class</a>.</p>
<trclass="field"><thclass="field-name">Precondition:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">f</span></tt> is a nullary <aclass="reference"href="./metafunction-class.html">Metafunction Class</a>; <ttclass="literal"><spanclass="pre">f::<ahref="./apply.html"class="identifier">apply</a>::type</span></tt> is a <em>type-name</em>.</td>
</tr>
<trclass="field"><thclass="field-name">Semantics:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">x</span></tt> is the result of the metafunction class invocation.</td>
<trclass="field"><thclass="field-name">Precondition:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">f</span></tt> is a nullary <aclass="reference"href="./metafunction-class.html">Metafunction Class</a>; <ttclass="literal"><spanclass="pre">f::<ahref="./apply.html"class="identifier">apply</a><>::type</span></tt> is a <em>type-name</em>.</td>
</tr>
<trclass="field"><thclass="field-name">Semantics:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">x</span></tt> is the result of the metafunction class invocation.</td>
<trclass="field"><thclass="field-name">Precondition:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">f</span></tt> is an <em>n</em>-ary metafunction class; <ttclass="literal"><spanclass="pre"><ahref="./apply.html"class="identifier">apply</a></span></tt> is a <aclass="reference"href="./metafunction.html">Metafunction</a>.</td>
</tr>
<trclass="field"><thclass="field-name">Semantics:</th><tdclass="field-body"><ttclass="literal"><spanclass="pre">x</span></tt> is the result of the metafunction class
invocation with the actual arguments <ttclass="literal"><spanclass="pre">a1</span></tt>,... <ttclass="literal"><spanclass="pre">an</span></tt>.</td>