title: Implicit type conversion with template
body: <p>I have a template <code>class A</code></p>
  
  <pre><code>template &lt;unsigned int m&gt;
  class A
  {
  public:
      A(int) {}
  };
  </code></pre>
  
  <p>Which has a constructor from <code>int</code>. And I have an operation:</p>
  
  <pre><code>template&lt;unsigned int m&gt;
  A&lt;m&gt; operator+(const A&lt;m&gt;&amp;, const A&lt;m&gt;&amp;)
  {
      return A&lt;m&gt;(0);
  }
  </code></pre>
  
  <p>But when I call:</p>
  
  <pre><code>A&lt;3&gt; a(4);
  A&lt;3&gt; b = a + 5;
  A&lt;3&gt; c = 5 + a;
  </code></pre>
  
  <p>I would like <code>int</code> to be implicitly converted to A, but compilers throws error.</p>
  
  <p>Is there any elegant way to enable implicit conversion without using such solutions as:</p>
  
  <ul>
  <li><code>a + A&lt;m&gt;(5)</code></li>
  <li><code>operator+&lt;3&gt;(a, 5)</code></li>
  </ul>