Boost C++ Libraries: Ticket #13622: BOOST_SCOPE_EXIT error : use of undeclared identifier 'boost_se_params_t_* https://svn.boost.org/trac10/ticket/13622 <p> When compiling with Visual C++ 2017 LLVM-vs2017 toolset (CLang), the following code produces " error : use of undeclared identifier 'boost_se_params_t_8'" </p> <pre class="wiki">#include &lt;boost/scope_exit.hpp&gt; template &lt;typename T&gt; class AClass { public: int function() { int handle = 0; BOOST_SCOPE_EXIT_TPL(&amp;handle) { if (handle) { handle = 0; } } BOOST_SCOPE_EXIT_END; return handle; } }; class Derived : public AClass&lt;Derived&gt; { }; int main() { Derived d; return d.function(); } &gt;Source.cpp(8,5): error : use of undeclared identifier 'boost_se_params_t_8' 1&gt; BOOST_SCOPE_EXIT_TPL(&amp;handle) { 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1&gt; BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1&gt; BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,22): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1&gt; (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(280,5): note: expanded from macro 'BOOST_SCOPE_EXIT_DETAIL_PARAMS_T' 1&gt; BOOST_PP_CAT(boost_se_params_t_, id) 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(22,32): note: expanded from macro 'BOOST_PP_CAT' 1&gt;# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(29,34): note: expanded from macro 'BOOST_PP_CAT_I' 1&gt;# define BOOST_PP_CAT_I(a, b) a ## b 1&gt; ^ 1&gt;&lt;scratch space&gt;(94,1): note: expanded from here 1&gt;boost_se_params_t_8 1&gt;^ 1&gt;Source.cpp(23,12): note: in instantiation of member function 'AClass&lt;Derived&gt;::function' requested here 1&gt; return d.function(); 1&gt; ^ 1&gt;Source.cpp(8,5): error : expected expression 1&gt; BOOST_SCOPE_EXIT_TPL(&amp;handle) { 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1&gt; BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1&gt; BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,59): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1&gt; (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1&gt; ^ 1&gt;2 errors generated. </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/13622 Trac 1.4.3