/////////////////////////////////////////////////////////////////////////////// /// \file pack_impl.hpp /// Contains helpers for pseudo-pack expansion. // // Copyright 2012 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) template struct expand_pattern<1, Fun, Cont> : Cont::template cat, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_0 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<2, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_1 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<3, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_2 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<4, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_3 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<5, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_4 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<6, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_5 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<7, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_6 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<8, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_7 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<9, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_8 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; template struct cat { typedef msvc_fun_workaround type; }; }; template struct expand_pattern<10, Fun, Cont> : Cont::template cat, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type , typename expand_pattern_helper, Fun>::type> { BOOST_MPL_ASSERT_MSG( (expand_pattern_helper, Fun>::applied::value) , NO_PACK_EXPRESSION_FOUND_IN_UNPACKING_PATTERN , (Fun) ); }; template struct expand_pattern_rest_9 { template struct cat; template struct cat { typedef msvc_fun_workaround type; }; };