Boost C++ Libraries: Ticket #6762: missing return value in function https://svn.boost.org/trac10/ticket/6762 <p> In the Chrono library gcc caught this: </p> <p> ./boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:218: warning: control reaches end of non-void function </p> <p> Which is a valid compiler error: </p> <div class="wiki-code"><div class="code"><pre><span class="mi">197</span> <span class="n">process_system_cpu_clock</span><span class="p">::</span><span class="n">time_point</span> <span class="n">process_system_cpu_clock</span><span class="p">::</span><span class="n">now</span><span class="p">()</span> <span class="n">BOOST_NOEXCEPT</span> <span class="mi">198</span> <span class="p">{</span> <span class="mi">199</span> <span class="n">tms</span> <span class="n">tm</span><span class="p">;</span> <span class="mi">200</span> <span class="n">clock_t</span> <span class="n">c</span> <span class="o">=</span> <span class="p">::</span><span class="n">times</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">tm</span> <span class="p">);</span> <span class="mi">201</span> <span class="k">if</span> <span class="p">(</span> <span class="n">c</span> <span class="o">==</span> <span class="n">clock_t</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">)</span> <span class="o">//</span> <span class="n">error</span> <span class="mi">202</span> <span class="p">{</span> <span class="mi">203</span> <span class="n">BOOST_ASSERT</span><span class="p">(</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="s2">&quot;Boost::Chrono - Internal Error&quot;</span><span class="p">);</span> <span class="mi">204</span> <span class="k">return</span> <span class="n">time_point</span><span class="p">();</span> <span class="mi">205</span> <span class="p">}</span> <span class="mi">206</span> <span class="k">else</span> <span class="mi">207</span> <span class="p">{</span> <span class="mi">208</span> <span class="k">if</span> <span class="p">(</span> <span class="n">chrono_detail</span><span class="p">::</span><span class="n">tick_factor</span><span class="p">()</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="p">)</span> <span class="mi">209</span> <span class="p">{</span> <span class="mi">210</span> <span class="k">return</span> <span class="n">time_point</span><span class="p">(</span> <span class="mi">211</span> <span class="n">microseconds</span><span class="p">((</span><span class="n">tm</span><span class="o">.</span><span class="n">tms_stime</span> <span class="o">+</span> <span class="n">tm</span><span class="o">.</span><span class="n">tms_cstime</span><span class="p">)</span><span class="o">*</span><span class="n">chrono_detail</span><span class="p">::</span><span class="n">tick_factor</span><span class="p">()));</span> <span class="mi">212</span> <span class="p">}</span> <span class="mi">213</span> <span class="k">else</span> <span class="mi">214</span> <span class="p">{</span> <span class="mi">215</span> <span class="n">BOOST_ASSERT</span><span class="p">(</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="s2">&quot;Boost::Chrono - Internal Error&quot;</span><span class="p">);</span> <span class="mi">216</span> <span class="p">}</span> <span class="mi">217</span> <span class="p">}</span> <span class="mi">218</span> <span class="p">}</span> </pre></div></div><p> Apparently the last else condition ought to not occur at runtime. If so, something like this would be better: </p> <div class="wiki-code"><div class="code"><pre><span class="mi">197</span> <span class="n">process_system_cpu_clock</span><span class="p">::</span><span class="n">time_point</span> <span class="n">process_system_cpu_clock</span><span class="p">::</span><span class="n">now</span><span class="p">()</span> <span class="n">BOOST_NOEXCEPT</span> <span class="mi">198</span> <span class="p">{</span> <span class="mi">199</span> <span class="n">tms</span> <span class="n">tm</span><span class="p">;</span> <span class="mi">200</span> <span class="n">clock_t</span> <span class="n">c</span> <span class="o">=</span> <span class="p">::</span><span class="n">times</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">tm</span> <span class="p">);</span> <span class="mi">201</span> <span class="k">if</span> <span class="p">(</span> <span class="n">c</span> <span class="o">==</span> <span class="n">clock_t</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">)</span> <span class="o">//</span> <span class="n">error</span> <span class="mi">202</span> <span class="p">{</span> <span class="mi">203</span> <span class="n">BOOST_ASSERT</span><span class="p">(</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="s2">&quot;Boost::Chrono - Internal Error&quot;</span><span class="p">);</span> <span class="mi">204</span> <span class="k">return</span> <span class="n">time_point</span><span class="p">();</span> <span class="mi">205</span> <span class="p">}</span> <span class="mi">206</span> <span class="k">else</span> <span class="mi">207</span> <span class="p">{</span> <span class="mi">208</span> <span class="n">BOOST_ASSERT</span><span class="p">(</span> <span class="n">chrono_detail</span><span class="p">::</span><span class="n">tick_factor</span><span class="p">()</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="p">);</span> <span class="mi">209</span> <span class="p">}</span> <span class="mi">210</span> <span class="k">return</span> <span class="n">time_point</span><span class="p">(</span> <span class="mi">211</span> <span class="n">microseconds</span><span class="p">((</span><span class="n">tm</span><span class="o">.</span><span class="n">tms_stime</span> <span class="o">+</span> <span class="n">tm</span><span class="o">.</span><span class="n">tms_cstime</span><span class="p">)</span><span class="o">*</span><span class="n">chrono_detail</span><span class="p">::</span><span class="n">tick_factor</span><span class="p">()));</span> <span class="mi">212</span> <span class="p">}</span> </pre></div></div> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6762 Trac 1.4.3 viboes Mon, 28 May 2012 17:21:11 GMT component changed; owner set https://svn.boost.org/trac10/ticket/6762#comment:1 https://svn.boost.org/trac10/ticket/6762#comment:1 <ul> <li><strong>owner</strong> set to <span class="trac-author">viboes</span> </li> <li><strong>component</strong> <span class="trac-field-old">None</span> → <span class="trac-field-new">chrono</span> </li> </ul> Ticket viboes Sun, 03 Jun 2012 14:08:18 GMT status changed https://svn.boost.org/trac10/ticket/6762#comment:2 https://svn.boost.org/trac10/ticket/6762#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> Ticket viboes Sun, 03 Jun 2012 15:06:57 GMT status, milestone changed; resolution set https://svn.boost.org/trac10/ticket/6762#comment:3 https://svn.boost.org/trac10/ticket/6762#comment:3 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost 1.50.0</span> </li> </ul> <p> Fixed in release branch. </p> Ticket