title: Is there a way to make member function NOT callable from constructor?
body: <p>I have member function (method) which uses </p>
  
  <pre class="lang-cpp prettyprint-override"><code>std::enable_shared_from_this::weak_from_this() 
  </code></pre>
  
  <p>In short: <code>weak_from_this</code> returns <code>weak_ptr</code> to <strong>this</strong>. One caveat is it can't be used from constructor.
  If somebody would use my function from constructor of inherited class, <code>weak_from_this</code> inside it would return expired <code>weak_ptr</code>. I guard against that with assertion checking that it's not expired, but it's a run-time check.</p>
  
  <p>Is there a way to check against it at compile time?</p>