ctor can be invoked with <i>k</i> arguments, where 0 &lt;= <i>k</i> &lt;= <i>n</i>.
For example:
<pre><code>tuple&lt;int, double&gt;() 
tuple&lt;int, double&gt;(1) 
tuple&lt;int, double&gt;(1, 3.14)
</code></pre>

<p>
If no initial value for an element is provided, it is default initialized (and hence must be default initializable).
For example.

<pre><code>class X {
  X(); 
public:
  X(std::string);
};

tuple&lt;X,X,X&gt;()                                              // error: no default constructor for X