Boost C++ Libraries: Ticket #12140: Warning about useless "explicit" in base_from_member.hpp https://svn.boost.org/trac10/ticket/12140 <p> In our build with Intel Compiler XE 2016 we have the additional warning option <code>-Wnon-virtual-dtor</code> enabled. With it we get the following massive warning: </p> <pre class="wiki">In file included from ../../../Third_Party_Libraries/Boost/include/boost/utility.hpp(13), from ../../../Third_Party_Libraries/Boost/include/boost/iterator/reverse_iterator.hpp(10), from ../../../Third_Party_Libraries/Boost/include/boost/range/reverse_iterator.hpp(18), from ../../../Third_Party_Libraries/Boost/include/boost/range/rbegin.hpp(18), from ../../../Third_Party_Libraries/Boost/include/boost/range/functions.hpp(23), from ../../../Third_Party_Libraries/Boost/include/boost/range/iterator_range_core.hpp(24), from ../../../Third_Party_Libraries/Boost/include/boost/range/iterator_range.hpp(13), from ../../../Third_Party_Libraries/Boost/include/boost/assign/list_of.hpp(20), from ../../../Third_Party_Libraries/Boost/include/boost/assign.hpp(20), from 1DFunction.cpp(3): ../../../Third_Party_Libraries/Boost/include/boost/utility/base_from_member.hpp(75): warning #2305: declaration of 'explicit' constructor without a single argument is redundant template &lt; typename T0 &gt; explicit base_from_member( T0 x0 ) : member( x0 ) {} template &lt; typename T0 , typename T1 &gt; explicit base_from_member( T0 x0 , T1 x1 ) : member( x0 , x1 ) {} template &lt; typename T0 , typename T1 , typename T2 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 ) : member( x0 , x1 , x2 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 ) : member( x0 , x1 , x2 , x3 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 ) : member( x0 , x1 , x2 , x3 , x4 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 ) : member( x0 , x1 , x2 , x3 , x4 , x5 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 , T8 x8 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 ) {} template &lt; typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 &gt; explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 , T8 x8 , T9 x9 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 ) {} ^ </pre><p> The fix isn't too difficult: add the one-argument constructor explicitly (and with explicit keyword) and let the preprocessor generate the rest without. I've attached the fix for Boost 1.60 </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/12140 Trac 1.4.3 Thimo Neubauer <thimo.neubauer@…> Wed, 20 Apr 2016 11:32:51 GMT attachment set https://svn.boost.org/trac10/ticket/12140 https://svn.boost.org/trac10/ticket/12140 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">base_from_member.diff</span> </li> </ul> <p> Fix for Boost 1.60 </p> Ticket Marshall Clow Wed, 15 Jun 2016 22:51:39 GMT owner, status changed https://svn.boost.org/trac10/ticket/12140#comment:1 https://svn.boost.org/trac10/ticket/12140#comment:1 <ul> <li><strong>owner</strong> changed from <span class="trac-author">No-Maintainer</span> to <span class="trac-author">Marshall Clow</span> </li> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> <p> Committed 34e05cb to fix this; will merge to release after the tests cycle. </p> Ticket Marshall Clow Thu, 04 May 2017 01:20:44 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/12140#comment:2 https://svn.boost.org/trac10/ticket/12140#comment:2 <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> </ul> <p> This was shipped as part of 1.64.0 </p> Ticket