1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/mpl11/list.hpp> 6 7 8 struct f { 9 using type = f; 10 template <typename, typename> 11 struct apply { struct type; }; 12 }; 13 14 template <int> struct x { struct type; }; 15 16 struct state { struct type; }; 17 18 using list = boost::mpl11::list< 19 <%= (1..input_size).map { |i| "x<#{i}>" }.join(', ') %> 20 >; 21 22 using result = boost::mpl11::foldl<f, state, list>::type; 23 main()24int main() { 25 26 } 27