title: Pretty print for all classes with ranged-base for loop support
body: <p>I want to implement pretty-print for all classes with ranged-base for loop support by overloadding &lt;&lt;. The (wrong) code is like this.</p>
  
  <pre><code>template&lt;class C&gt; ostream&amp; operator&lt;&lt;(ostream&amp; out, const C&amp; v) {
    for(auto x : v) out&lt;&lt;x&lt;&lt;' ';
    return out;
  }
  </code></pre>
  
  <p>The problem here is that this will conflict with existing &lt;&lt; overloading. Is there a way to specify in the template that C must support ranged-base for loop?</p>