title: Is there a safe navigation operator for C++?
body: <p>In Modern C++, is there a way to do safe navigation?</p>
  
  <p>For example, <em>instead</em> of doing...</p>
  
  <pre><code>if (p &amp;&amp; p-&gt;q &amp;&amp; p-&gt;q-&gt;r)
      p-&gt;q-&gt;r-&gt;DoSomething();
  </code></pre>
  
  <p>...having a succinct syntax by using some sort of short-circuiting smart pointer, or some other kind of syntax leveraging operator overloading, or something in the Standard C++ Library, or in Boost.</p>
  
  <pre><code>p?-&gt;q?-&gt;r?-&gt;DoSomething(); // C++ pseudo-code.
  </code></pre>
  
  <p>Context is C++17 in particular.</p>