title: Simply iterate over uchar starting from '0'
body: <p>I'm just trying to do this as a loop :</p>
  <pre><code>    keyboardHandler.register_callback('0', [&amp;](){
          buttons.at(0)-&gt;pressed();
      });
      keyboardHandler.register_callback('1', [&amp;](){
          buttons.at(1)-&gt;pressed();
      });
      keyboardHandler.register_callback('2', [&amp;](){
          buttons.at(2)-&gt;pressed();
      });
      keyboardHandler.register_callback('3', [&amp;](){
          buttons.at(3)-&gt;pressed();
      });
      keyboardHandler.register_callback('4', [&amp;](){
          buttons.at(4)-&gt;pressed();
      });
  </code></pre>
  <p>The previous sample work perfectly.</p>
  <p>So I basicly try this :</p>
  <pre><code>    for(int i = 0 ; i &lt; 5 ; i ++){
          keyboardHandler.register_callback('0' + i, [&amp;](){
              buttons.at(i)-&gt;pressed();
          });
      }
  </code></pre>
  <p>which give me the following execution exception when I press the '0', '1', ... '4' on my keyboard :</p>
  <pre><code>terminate called after throwing an instance of 'std::out_of_range'
    what():  vector::_M_range_check: __n (which is 5) &gt;= this-&gt;size() (which is 5)
  Abandon (core dumped)
  </code></pre>
  <p>Here is my register_callback method :</p>
  <pre><code>    void register_callback(unsigned char key, std::function&lt;void()&gt; callback){
          _registered_callback[key] = callback ;
      }
  </code></pre>
  <p>PS : I do not think the problem is coming from deeper in the code because the test without looping work perfectly.</p>