Boost C++ Libraries: Ticket #9205: [variant or mpl] compilation error VC2013 https://svn.boost.org/trac10/ticket/9205 <p> I tried to use Boost 1.55.0 Beta RC's boost::variant with VC2013 RC. Compilation error this code: </p> <pre class="wiki">#include &lt;boost/variant.hpp&gt; int main() { boost::variant&lt;int, char&gt; v; } </pre><p> Error message is here: (sorry, japanese error message...) </p> <pre class="wiki">1&gt;------ ビルド開始: プロジェクト:CppConsole, 構成:Debug Win32 ------ 1&gt; main.cpp 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(149): error C2143: 構文エラー : ';' が '&lt;' の前にありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\assert.hpp(153) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_assert&lt;Pred&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(149): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(152): error C2238: ';' の前に無効なトークンがあります。 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(159): error C2143: 構文エラー : ';' が '&lt;' の前にありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\assert.hpp(163) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_assert_not&lt;Pred&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(159): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(162): error C2238: ';' の前に無効なトークンがあります。 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(45): error C2039: 'assert_not_arg' : 'boost::mpl' のメンバーではありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::arg&lt;1&gt;::apply&lt;T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=int 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply.hpp(63) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap2&lt;boost::mpl::protect&lt;boost::mpl::arg&lt;1&gt;,0&gt;,T1,T2&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=int 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\reverse_fold_impl.hpp(74) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply2&lt;ForwardOp,boost::mpl::l_end,int&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; ForwardOp=boost::mpl::arg&lt;1&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\reverse_fold.hpp(41) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::reverse_fold_impl&lt;2,boost::mpl::l_iter&lt;boost::mpl::list2&lt;T0,T1&gt;&gt;,boost::mpl::l_iter&lt;boost::mpl::l_end&gt;,State,BackwardOp,ForwardOp&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T0=int 1&gt; , T1=char 1&gt; , State=boost::mpl::l_end 1&gt; , BackwardOp=boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;boost::unwrap_recursive,boost::mpl::void_&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt; 1&gt; , ForwardOp=boost::mpl::arg&lt;1&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(65) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::reverse_fold&lt;Seq,boost::mpl::l_end,boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;,boost::mpl::arg&lt;1&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq=boost::mpl::list2&lt;int,char&gt; 1&gt; , F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(113) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::reverse_transform1_impl&lt;P1,P2,boost::mpl::front_inserter&lt;boost::mpl::clear_impl&lt;boost::mpl::aux::list_tag&gt;::apply&lt;Sequence&gt;::type&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; P1=boost::mpl::list2&lt;int,char&gt; 1&gt; , P2=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , Sequence=boost::mpl::list2&lt;int,char&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\eval_if.hpp(41) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::transform1&lt;Seq1,Seq2OrOperation,OperationOrInserter&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq1=boost::mpl::list2&lt;int,char&gt; 1&gt; , Seq2OrOperation=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , OperationOrInserter=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(138) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_if&lt;boost::mpl::or_&lt;boost::mpl::is_na&lt;boost::mpl::na&gt;,boost::mpl::is_lambda_expression&lt;Seq2OrOperation&gt;,boost::mpl::not_&lt;boost::mpl::is_sequence&lt;Seq2OrOperation&gt;&gt;,boost::mpl::false_,boost::mpl::false_&gt;,boost::mpl::transform1&lt;Seq1,Seq2OrOperation,OperationOrInserter&gt;,boost::mpl::transform2&lt;Seq1,Seq2OrOperation,OperationOrInserter,Inserter&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq2OrOperation=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , Seq1=boost::mpl::list2&lt;int,char&gt; 1&gt; , OperationOrInserter=boost::mpl::na 1&gt; , Inserter=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\variant\variant.hpp(1209) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::transform&lt;boost::mpl::list2&lt;T0,T1&gt;,boost::unwrap_recursive&lt;boost::mpl::_1&gt;,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T0=int 1&gt; , T1=char 1&gt; ] 1&gt; c:\users\a_takahashi\documents\visual studio 2013\projects\cppconsole\cppconsole\main.cpp(5) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::variant&lt;int,char,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(45): error C3861: 'assert_not_arg': 識別子が見つかりませんでした 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(63): error C2039: 'assert_not_arg' : 'boost::mpl' のメンバーではありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(80) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::arg&lt;2&gt;::apply&lt;T1,T2,T3,T4,T5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; , T3=boost::mpl::na 1&gt; , T4=boost::mpl::na 1&gt; , T5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(50) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap5&lt;boost::mpl::arg&lt;2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(143) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::resolve_bind_arg&lt;boost::mpl::arg&lt;2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(80) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;::apply&lt;T1,T2,T3,T4,T5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; , T3=boost::mpl::na 1&gt; , T4=boost::mpl::na 1&gt; , T5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(160) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap5&lt;boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(206) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::resolve_bind_arg&lt;boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;::apply&lt;T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply.hpp(63) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap2&lt;boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;,T1,T2&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\reverse_fold_impl.hpp(81) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply2&lt;BackwardOp,boost::mpl::l_end,char&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; BackwardOp=boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;boost::unwrap_recursive,boost::mpl::void_&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt; 1&gt; ] 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(63): error C3861: 'assert_not_arg': 識別子が見つかりませんでした ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== </pre><p> patch to boost/mpl/assert.hpp, line 137: </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC, &gt;= 1700) </pre><p> to </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC, == 1700) </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9205 Trac 1.4.3 Akira Takahashi <faithandbrave@…> Mon, 07 Oct 2013 08:54:18 GMT <link>https://svn.boost.org/trac10/ticket/9205#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9205#comment:1</guid> <description> <p> Sorry, already fixed in trunk. Please close this ticket. </p> </description> <category>Ticket</category> </item> <item> <author>raad@…</author> <pubDate>Fri, 11 Oct 2013 14:14:42 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/9205#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9205#comment:2</guid> <description> <p> No, please don't just close the ticket. Please merge <a class="changeset" href="https://svn.boost.org/trac10/changeset/84443" title="Make BOOST_WORKAROUND consistent.">r84443</a> to the release branch. This issue will be a showstopper once VS2013 RTM is released. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Antony Polukhin</dc:creator> <pubDate>Tue, 12 Nov 2013 10:04:50 GMT</pubDate> <title>owner, component changed https://svn.boost.org/trac10/ticket/9205#comment:3 https://svn.boost.org/trac10/ticket/9205#comment:3 <ul> <li><strong>owner</strong> changed from <span class="trac-author">ebf</span> to <span class="trac-author">Aleksey Gurtovoy</span> </li> <li><strong>component</strong> <span class="trac-field-old">variant</span> → <span class="trac-field-new">mpl</span> </li> </ul> Ticket