Boost C++ Libraries: Ticket #1671: type mismatch of buffer size parameter causes overload resolution to fail https://svn.boost.org/trac10/ticket/1671 <p> See <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.user/33728"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.user/33728</a>. </p> <p> Change documentation so that buffer size parameters have type int, or disable forwarding constructors when first parameter matches device type and second parameter is integral </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/1671 Trac 1.4.3 Jonathan Turkanis Mon, 02 Jun 2008 16:32:11 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/1671#comment:1 https://svn.boost.org/trac10/ticket/1671#comment:1 <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">fixed</span> </li> </ul> <p> I have disabled the forwarding constructors and open() overloads in detail/forward.hpp when the first template parameter is identical to the underlying device type. This is a little too broad, since it fails to check whether the remaining parameters are integral; I judged that device constructors whose first parameter is an instance of the device itself would be pretty rare. </p> <p> I was able to reproduce the error with VC8.0 on a 32-bit OS with this code: </p> <blockquote> <p> typedef stream&lt;file_source&gt; my_stream; my_stream s(file_source(""), (long) 100); </p> </blockquote> <p> The modification to forward.hpp allows the above to compile. </p> <p> See <a class="changeset" href="https://svn.boost.org/trac10/changeset/46047" title="in forward.hpp, disabled forwarding constructors and overloads of open ...">[46047]</a> </p> Ticket