title: Confusion about the stack trace of websocketpp destruction
body: <p>I'm using Instrument(XCode tool) to get the stack trace of my program and i got the following result:</p>
  
  <p><a href="https://i.stack.imgur.com/GLZR1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GLZR1.png" alt="enter image description here"></a></p>
  
  <p>In this picture it shows that the destruction of</p>
  
  <p><code>std::__1::vector&lt;websocketpp::transport::buffer, std::__1::allocator&lt;websocketpp::transport::buffer&gt; &gt;::~vector()</code></p>
  
  <p>called the</p>
  
  <p><code>std::__1::vector&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::chrono_time_traits&lt;std::__1::chrono::steady_clock, boost::asio::wait_traits&lt;std::__1::chrono::steady_clock&gt; &gt; &gt;::heap_entry, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::chrono_time_traits&lt;std::__1::chrono::steady_clock, boost::asio::wait_traits&lt;std::__1::chrono::steady_clock&gt; &gt; &gt;::heap_entry&gt; &gt;::~vector()</code></p>
  
  <p>However, when I dig into the source code of <code>websocketpp::transport::buffer</code>, its only member was <code>char const *buf</code> and <code>size_t len</code> showed below:</p>
  
  <pre><code>// defined in websocketpp/transport/base/connection.hpp
  
  137 /// A simple utility buffer class
  138 struct buffer {
  139     buffer(char const * b, size_t l) : buf(b),len(l) {}
  140
  141     char const * buf;
  142     size_t len;
  143 }; 
  </code></pre>
  
  <p>So, why destruction of <code>websocketpp::transport::buffer</code> could cause the destruction of the <code>vector&lt;boost::asio::detail::timer_queue.... ::heap_entry&gt; &gt;</code>?</p>
  
  <p><strong>Update: 2018-10-18</strong></p>
  
  <p>Today I used <code>lldb</code> to debug my program, found that the destruction of the <code>vector&lt;boost::asio::detail::timer_queue.... ::heap_entry&gt; &gt;</code> was never be executed yet.</p>
  
  <p>i feel more confused now...</p>