title: Why STL algorithms are not overloaded for std::tuple?
body: <p>I was wondering why there is no overload for some STL algorithms in order to make them usable with tuples. By some, I mean those which do not reorder elements. A good example might be <code>std::for_each</code>.</p>
  
  <p>Is there a language limitation, such as maybe the fact the is not possible to mix compile-time evaluation and run-time evaluation? Let me clarify this last sentence:</p>
  
  <p>I know that the iteration itself would need to become a compile-time iteration, compile time iterators then have to be defined in order to use the compile-time <code>std::get&lt;&gt;</code> to fetch values. After that, it should be possible to apply a templated lambda to every eterogeneous type in a tuple, but the value of that type is then runtime evalutated.</p>
  
  <p>I think it should be possible, even if I personally would not know where to start. I saw implementations that do not look like <code>std::for_each</code> at all to achieve the same result. Why is so?</p>
  
  <p>(NOTE: by 'tuple' I mean both <code>std::pair</code> and <code>std::tuple</code>)</p>