Boost C++ Libraries: Ticket #12027: is_base_of<B, D> should work ehen B is incomplete https://svn.boost.org/trac10/ticket/12027 <p> The Standard ([meta.rel]) requires that in is_base_of&lt;B, D&gt; D must be a complete type, but it does not require the same of B. This makes sense, because if we compare a complete type D and an incomplete type B, the former is surely not derived from the latter. </p> <p> In contrast, boost::is_base_of imposes an additional constraint that B must also be complete: </p> <p> <a href="http://www.boost.org/doc/libs/1_60_0/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html">http://www.boost.org/doc/libs/1_60_0/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html</a> </p> <p> Can you remove this extra constraint? It appears to be spoiling one Boost.Optional tests: </p> <p> <a href="http://www.boost.org/development/tests/master/developer/output/oracle-sparc-S2-12-5-cpp11-boost-bin-v2-libs-optional-test-optional_test-test-sun-12-5_cpp11-release-threading-multi.html">http://www.boost.org/development/tests/master/developer/output/oracle-sparc-S2-12-5-cpp11-boost-bin-v2-libs-optional-test-optional_test-test-sun-12-5_cpp11-release-threading-multi.html</a> </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/12027 Trac 1.4.3 Mike <vigorous.activity@…> Wed, 30 Nov 2016 13:03:05 GMT <link>https://svn.boost.org/trac10/ticket/12027#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/12027#comment:1</guid> <description> <p> Checked 1.55 boost version, works with incomplete B. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sat, 03 Feb 2018 16:09:22 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/12027#comment:2 https://svn.boost.org/trac10/ticket/12027#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">wontfix</span> </li> </ul> <p> I've been having a look at this and: </p> <ul><li>There is no restriction on B being complete as long as we have a working compiler intrinsic that supports this. </li><li>The Oracle compiler supports the <code>__oracle_is_base_of intrinsic</code>, but it's use is even more restricted/broken. So we don't use it, as it makes things even worse than they are already. </li></ul><p> Sorry, but I don't see any easy way to fix this. </p> Ticket