title: no matching function for call to std::vector<std::tuple> push_back
body: <p>I have a sample program containing 6 timepoints using <code>high_resolution_clock::now()</code> from standard <code>chrono</code> header. I take differences b/w each of them resulting in 3 differences and caste them as <code>auto duration1 = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;( t2 - t1 ).count();</code> to microseconds.</p>
  
  <p>I have another variable named durations which is assigned as follows: <code>auto durations = std::make_tuple(duration1,duration2,duration3);</code> containing previous time-point differences.</p>
  
  <p>I have to push this tuple into an vector, so I have introduced <code>std::vector&lt;std::tuple&lt;std::chrono::microseconds,std::chrono::microseconds,std::chrono::microseconds&gt;&gt; list;</code> However on using <code>list.push_back(durations);</code> I get an error as :</p>
  
  <pre><code>prog.cpp: In function 'int main()':
  prog.cpp:36:29: error: no matching function for call to 'std::vector&lt;std::tuple&lt;std::chrono::duration&lt;long long int, std::ratio&lt;1ll, 1000000ll&gt; &gt;, std::chrono::duration&lt;long long int, std::ratio&lt;1ll, 1000000ll&gt; &gt;, std::chrono::duration&lt;long long int, std::ratio&lt;1ll, 1000000ll&gt; &gt; &gt; &gt;::push_back(std::tuple&lt;long long int, long long int, long long int&gt;&amp;)'
       list.push_back(durations);
  </code></pre>
  
  <hr>
  
  <p>I tried to search about <code>std::chrono::microseconds</code> and other <code>std::chrono::duration</code> stuff <a href="https://en.cppreference.com/w/cpp/chrono/duration">here</a> but wasn't successful in rectifying the problem.</p>
  
  <p>I know this has something to do with my negligence of type system, but I'm unable to locate that error. Any help would be appreciated, &amp; here is ideone <a href="http://ideone.com/6xxOa1">link</a>.</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;chrono&gt;
  #include &lt;vector&gt;
  #include &lt;tuple&gt;
  
  using namespace std;
  using namespace std::chrono;
  
  void function()
  {
      long long number = 0;
  
      for( long long i = 0; i != 2000000; ++i )
      {
         number += 5;
      }
  }
  
  int main()
  {
      high_resolution_clock::time_point t1 = high_resolution_clock::now();
      high_resolution_clock::time_point t3 = high_resolution_clock::now();
      high_resolution_clock::time_point t5 = high_resolution_clock::now();
      function();
      high_resolution_clock::time_point t2 = high_resolution_clock::now();
      high_resolution_clock::time_point t4 = high_resolution_clock::now();
      high_resolution_clock::time_point t6 = high_resolution_clock::now();
  
      auto duration1 = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;( t2 - t1 ).count();
      auto duration2 = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;( t4 - t3 ).count();
      auto duration3 = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;( t6 - t5 ).count();
  
      auto durations = std::make_tuple(duration1,duration2,duration3);
  
      std::vector&lt;std::tuple&lt;std::chrono::microseconds,std::chrono::microseconds,std::chrono::microseconds&gt;&gt; list;
      list.push_back(durations);
  
      cout &lt;&lt; duration1 &lt;&lt; " -- "&lt;&lt; duration2 &lt;&lt; " -- "&lt;&lt; duration3 &lt;&lt; " -- ";
      return 0;
  }
  </code></pre>