title: failure to invoke reverse on a fibonacci sequence in range-v3
body: <p>I can't seem to make <code>view::reverse</code> operate on the first 10 elements (using <code>view::take(10)</code>) of the fibonacci sequence <code>v</code> generated using <code>range-v3</code>'s <code>view::generate</code></p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;range/v3/view/iota.hpp&gt;
  #include &lt;range/v3/view/generate.hpp&gt;
  #include &lt;range/v3/view/take.hpp&gt;
  #include &lt;range/v3/view/reverse.hpp&gt;
  
  using namespace ranges;
  
  int main() {
      int i = 0 ; int j = 1;
      auto v = view::generate([&amp;]()-&gt;int{int tmp = i; i += j; std::swap(i, j); return tmp;}); // fibonacci
      std::cout &lt;&lt; (v | view::take(10) | view::reverse) &lt;&lt; '\n';
      return 0;
  }
  </code></pre>
  
  <p>I get the following error (followed by a lot more template-related output):</p>
  
  <pre><code>error: no match for 'operator&lt;&lt;' (operand types are 'std::ostream {aka std::basic_ostream&lt;char&gt;}' and 'void')
       std::cout &lt;&lt; (v | view::take(10) | view::reverse) &lt;&lt; '\n';
  </code></pre>
  
  <p>However, if I use <code>view::iota</code> to create <code>v</code>, e.g.,</p>
  
  <pre><code> auto v = view::iota(20);
  </code></pre>
  
  <p>I get no error and the expected output. </p>
  
  <p>What's going wrong?</p>