Boost C++ Libraries: Ticket #12236: BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES for msvc 2015 https://svn.boost.org/trac10/ticket/12236 <p> Ealier i heard that msvc compiler has bugs around variadic templates(error like 'not enough template arguments') I tried to remove _MSC_VER checks on my vs2015 update 2 and i have got compile result without any errors. May be it's time to change this condition. Because very uncomfortably to use variant with limited quantity of template arguments. </p> <p> #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ </p> <blockquote> <table class="wiki"> <tr><td> (!defined(<span class="underline">clang</span>) &amp;&amp; defined(<span class="underline">GNUC</span>) &amp;&amp; (<span class="underline">GNUC</span> == 4) &amp;&amp; (<span class="underline">GNUC_MINOR</span> &lt; 7)) \ </td></tr><tr>/*<td> (defined(_MSC_VER) &amp;&amp; (_MSC_VER &lt;= 1900))*/ \ </td></tr><tr><td> defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE) \ </td></tr><tr><td> defined (BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT) </td></tr></table> </blockquote> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/12236 Trac 1.4.3 fsmoke@… Mon, 30 May 2016 18:01:46 GMT <link>https://svn.boost.org/trac10/ticket/12236#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/12236#comment:1</guid> <description> <p> Sorry '/*' wrongly moved out is must be around /*(defined(_MSC_VER) &amp;&amp; (_MSC_VER &lt;= 1900))*/ </p> <p> </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 30 May 2016 18:46:49 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/12236#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/12236#comment:2</guid> <description> <p> oh variant based on mpl - why? </p> <p> #if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) </p> <p> template &lt; typename... T &gt; struct make_variant_list { </p> <blockquote> <p> typedef typename mpl::list&lt; T... &gt;::type type; </p> </blockquote> <p> }; </p> <p> #else <em> defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) </em></p> <p> so it's check is irrelevant cos we has limitation of mpl :( (20 arguments by default) </p> <p> so i have another question - when limitations will be removed? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Antony Polukhin</dc:creator> <pubDate>Thu, 02 Jun 2016 19:30:44 GMT</pubDate> <title>owner changed https://svn.boost.org/trac10/ticket/12236#comment:3 https://svn.boost.org/trac10/ticket/12236#comment:3 <ul> <li><strong>owner</strong> changed from <span class="trac-author">ebf</span> to <span class="trac-author">Antony Polukhin</span> </li> </ul> <p> I do not have access to the latest msvc2015 right now. Could you apply your patch and run all the tests from boost_root/libs/variant/test. Just go to that folder and run ..\..\..\b2 from it. </p> <p> If everything is OK, than it's a good sign not to increment 1900 next time :) Unfortunately it's impossible to enable variadics for _MSC_VER == 1900, because there's no known to me way to distinguish vs2015 update 2 from older versions (update 1 and before) and Boost must be able to run on any compiler. </p> <blockquote class="citation"> <p> oh variant based on mpl - why? </p> </blockquote> <p> Variant was created long before variadic templates appeared. Since then variant uses MPL. </p> <blockquote class="citation"> <p> when limitations will be removed? </p> </blockquote> <p> When Boost.MPL will be transfered to variadic templates. That's a big task and nobody has time or will to do it right now. However pull requests are always welcomed ;) </p> Ticket fsmoke@… Fri, 03 Jun 2016 07:06:44 GMT <link>https://svn.boost.org/trac10/ticket/12236#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/12236#comment:4</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/12236#comment:3" title="Comment 3">apolukhin</a>: </p> <blockquote class="citation"> <p> I do not have access to the latest msvc2015 right now. Could you apply your patch and run all the tests from boost_root/libs/variant/test. Just go to that folder and run ..\..\..\b2 from it. </p> </blockquote> <p> I'll try to do this as soon as posible </p> <blockquote class="citation"> <p> If everything is OK, than it's a good sign not to increment 1900 next time :) Unfortunately it's impossible to enable variadics for _MSC_VER == 1900, because there's no known to me way to distinguish vs2015 update 2 from older versions (update 1 and before) and Boost must be able to run on any compiler. </p> </blockquote> <p> May be you can try _MSC_FULL_VER instead of _MSC_VER </p> <blockquote class="citation"> <p> When Boost.MPL will be transfered to variadic templates. That's a big task and nobody has time or will to do it right now. However pull requests are always welcomed ;) </p> </blockquote> <p> Yeah it's great job to do this. But i heard new standard will contain std::variant </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Antony Polukhin</dc:creator> <pubDate>Wed, 18 Jan 2017 22:28:33 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/12236#comment:5 https://svn.boost.org/trac10/ticket/12236#comment:5 <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'm afraid that MSVC2015 <a class="ext-link" href="https://ci.appveyor.com/project/apolukhin/variant/build/1.61.10-develop"><span class="icon">​</span>still has issues with variadic templates</a>. </p> Ticket