blob: 54db3be19397af4cd2650e5a01caff9cb156af63 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
2// (C) Copyright Tobias Schwinger
3//
4// Use modification and distribution are subject to the boost Software License,
5// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
6
7//------------------------------------------------------------------------------
8
9// no include guards, this file is intended for multiple inclusion
10
Jeff Thompson3d613fd2013-10-15 15:39:04 -070011// input: NDNBOOST_FT_syntax type macro to use
12// input: NDNBOOST_FT_cc empty or cc specifier
13// input: NDNBOOST_FT_ell empty or "..."
14// input: NDNBOOST_FT_cv empty or cv qualifiers
15// input: NDNBOOST_FT_flags single decimal integer encoding the flags
16// output: NDNBOOST_FT_n number of component types (arity+1)
17// output: NDNBOOST_FT_arity current arity
18// output: NDNBOOST_FT_type macro that expands to the type
19// output: NDNBOOST_FT_tplargs(p) template arguments with given prefix
20// output: NDNBOOST_FT_params(p) parameters with given prefix
Jeff Thompsona28eed82013-08-22 16:21:10 -070021
Jeff Thompson3d613fd2013-10-15 15:39:04 -070022# define NDNBOOST_FT_make_type(flags,cc,arity) NDNBOOST_FT_make_type_impl(flags,cc,arity)
23# define NDNBOOST_FT_make_type_impl(flags,cc,arity) make_type_ ## flags ## _ ## cc ## _ ## arity
Jeff Thompsona28eed82013-08-22 16:21:10 -070024template< typename R >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070025struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,0)
Jeff Thompsona28eed82013-08-22 16:21:10 -070026{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070027typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (NDNBOOST_FT_nullary_param NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -070028};
29template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070030struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 1 >
Jeff Thompsona28eed82013-08-22 16:21:10 -070031{
32template<typename S> struct synthesize_impl_i
33{
34private:
35typedef typename mpl::begin<S> ::type iter_0;
36public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -070037typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,0)
Jeff Thompsona28eed82013-08-22 16:21:10 -070038< typename mpl::deref< iter_0 > ::type
39> ::type type;
40};
41};
42template< typename R , typename T0 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070043struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1)
Jeff Thompsona28eed82013-08-22 16:21:10 -070044{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070045typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -070046};
47template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070048struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 2 >
Jeff Thompsona28eed82013-08-22 16:21:10 -070049{
50template<typename S> struct synthesize_impl_i
51{
52private:
53typedef typename mpl::begin<S> ::type iter_0;
54typedef typename mpl::next< iter_0 > ::type iter_1;
55public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -070056typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1)
Jeff Thompsona28eed82013-08-22 16:21:10 -070057< typename mpl::deref< iter_0 > ::type
58, typename mpl::deref< iter_1 > ::type
59> ::type type;
60};
61};
62template< typename R , typename T0 , typename T1 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070063struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2)
Jeff Thompsona28eed82013-08-22 16:21:10 -070064{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070065typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -070066};
67template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070068struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 3 >
Jeff Thompsona28eed82013-08-22 16:21:10 -070069{
70template<typename S> struct synthesize_impl_i
71{
72private:
73typedef typename mpl::begin<S> ::type iter_0;
74typedef typename mpl::next< iter_0 > ::type iter_1;
75typedef typename mpl::next< iter_1 > ::type iter_2;
76public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -070077typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2)
Jeff Thompsona28eed82013-08-22 16:21:10 -070078< typename mpl::deref< iter_0 > ::type
79, typename mpl::deref< iter_1 > ::type
80, typename mpl::deref< iter_2 > ::type
81> ::type type;
82};
83};
84template< typename R , typename T0 , typename T1 , typename T2 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070085struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3)
Jeff Thompsona28eed82013-08-22 16:21:10 -070086{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070087typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -070088};
89template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070090struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 4 >
Jeff Thompsona28eed82013-08-22 16:21:10 -070091{
92template<typename S> struct synthesize_impl_i
93{
94private:
95typedef typename mpl::begin<S> ::type iter_0;
96typedef typename mpl::next< iter_0 > ::type iter_1;
97typedef typename mpl::next< iter_1 > ::type iter_2;
98typedef typename mpl::next< iter_2 > ::type iter_3;
99public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700100typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700101< typename mpl::deref< iter_0 > ::type
102, typename mpl::deref< iter_1 > ::type
103, typename mpl::deref< iter_2 > ::type
104, typename mpl::deref< iter_3 > ::type
105> ::type type;
106};
107};
108template< typename R , typename T0 , typename T1 , typename T2 , typename T3 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700109struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700110{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700111typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700112};
113template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700114struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 5 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700115{
116template<typename S> struct synthesize_impl_i
117{
118private:
119typedef typename mpl::begin<S> ::type iter_0;
120typedef typename mpl::next< iter_0 > ::type iter_1;
121typedef typename mpl::next< iter_1 > ::type iter_2;
122typedef typename mpl::next< iter_2 > ::type iter_3;
123typedef typename mpl::next< iter_3 > ::type iter_4;
124public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700125typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700126< typename mpl::deref< iter_0 > ::type
127, typename mpl::deref< iter_1 > ::type
128, typename mpl::deref< iter_2 > ::type
129, typename mpl::deref< iter_3 > ::type
130, typename mpl::deref< iter_4 > ::type
131> ::type type;
132};
133};
134template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700135struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700136{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700137typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700138};
139template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700140struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 6 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700141{
142template<typename S> struct synthesize_impl_i
143{
144private:
145typedef typename mpl::begin<S> ::type iter_0;
146typedef typename mpl::next< iter_0 > ::type iter_1;
147typedef typename mpl::next< iter_1 > ::type iter_2;
148typedef typename mpl::next< iter_2 > ::type iter_3;
149typedef typename mpl::next< iter_3 > ::type iter_4;
150typedef typename mpl::next< iter_4 > ::type iter_5;
151public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700152typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700153< typename mpl::deref< iter_0 > ::type
154, typename mpl::deref< iter_1 > ::type
155, typename mpl::deref< iter_2 > ::type
156, typename mpl::deref< iter_3 > ::type
157, typename mpl::deref< iter_4 > ::type
158, typename mpl::deref< iter_5 > ::type
159> ::type type;
160};
161};
162template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700163struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700164{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700165typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700166};
167template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700168struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 7 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700169{
170template<typename S> struct synthesize_impl_i
171{
172private:
173typedef typename mpl::begin<S> ::type iter_0;
174typedef typename mpl::next< iter_0 > ::type iter_1;
175typedef typename mpl::next< iter_1 > ::type iter_2;
176typedef typename mpl::next< iter_2 > ::type iter_3;
177typedef typename mpl::next< iter_3 > ::type iter_4;
178typedef typename mpl::next< iter_4 > ::type iter_5;
179typedef typename mpl::next< iter_5 > ::type iter_6;
180public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700181typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700182< typename mpl::deref< iter_0 > ::type
183, typename mpl::deref< iter_1 > ::type
184, typename mpl::deref< iter_2 > ::type
185, typename mpl::deref< iter_3 > ::type
186, typename mpl::deref< iter_4 > ::type
187, typename mpl::deref< iter_5 > ::type
188, typename mpl::deref< iter_6 > ::type
189> ::type type;
190};
191};
192template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700193struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700194{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700195typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700196};
197template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700198struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 8 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700199{
200template<typename S> struct synthesize_impl_i
201{
202private:
203typedef typename mpl::begin<S> ::type iter_0;
204typedef typename mpl::next< iter_0 > ::type iter_1;
205typedef typename mpl::next< iter_1 > ::type iter_2;
206typedef typename mpl::next< iter_2 > ::type iter_3;
207typedef typename mpl::next< iter_3 > ::type iter_4;
208typedef typename mpl::next< iter_4 > ::type iter_5;
209typedef typename mpl::next< iter_5 > ::type iter_6;
210typedef typename mpl::next< iter_6 > ::type iter_7;
211public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700212typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700213< typename mpl::deref< iter_0 > ::type
214, typename mpl::deref< iter_1 > ::type
215, typename mpl::deref< iter_2 > ::type
216, typename mpl::deref< iter_3 > ::type
217, typename mpl::deref< iter_4 > ::type
218, typename mpl::deref< iter_5 > ::type
219, typename mpl::deref< iter_6 > ::type
220, typename mpl::deref< iter_7 > ::type
221> ::type type;
222};
223};
224template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700225struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700226{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700227typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700228};
229template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700230struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 9 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700231{
232template<typename S> struct synthesize_impl_i
233{
234private:
235typedef typename mpl::begin<S> ::type iter_0;
236typedef typename mpl::next< iter_0 > ::type iter_1;
237typedef typename mpl::next< iter_1 > ::type iter_2;
238typedef typename mpl::next< iter_2 > ::type iter_3;
239typedef typename mpl::next< iter_3 > ::type iter_4;
240typedef typename mpl::next< iter_4 > ::type iter_5;
241typedef typename mpl::next< iter_5 > ::type iter_6;
242typedef typename mpl::next< iter_6 > ::type iter_7;
243typedef typename mpl::next< iter_7 > ::type iter_8;
244public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700245typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700246< typename mpl::deref< iter_0 > ::type
247, typename mpl::deref< iter_1 > ::type
248, typename mpl::deref< iter_2 > ::type
249, typename mpl::deref< iter_3 > ::type
250, typename mpl::deref< iter_4 > ::type
251, typename mpl::deref< iter_5 > ::type
252, typename mpl::deref< iter_6 > ::type
253, typename mpl::deref< iter_7 > ::type
254, typename mpl::deref< iter_8 > ::type
255> ::type type;
256};
257};
258template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700259struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700260{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700261typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700262};
263template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700264struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 10 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700265{
266template<typename S> struct synthesize_impl_i
267{
268private:
269typedef typename mpl::begin<S> ::type iter_0;
270typedef typename mpl::next< iter_0 > ::type iter_1;
271typedef typename mpl::next< iter_1 > ::type iter_2;
272typedef typename mpl::next< iter_2 > ::type iter_3;
273typedef typename mpl::next< iter_3 > ::type iter_4;
274typedef typename mpl::next< iter_4 > ::type iter_5;
275typedef typename mpl::next< iter_5 > ::type iter_6;
276typedef typename mpl::next< iter_6 > ::type iter_7;
277typedef typename mpl::next< iter_7 > ::type iter_8;
278typedef typename mpl::next< iter_8 > ::type iter_9;
279public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700280typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700281< typename mpl::deref< iter_0 > ::type
282, typename mpl::deref< iter_1 > ::type
283, typename mpl::deref< iter_2 > ::type
284, typename mpl::deref< iter_3 > ::type
285, typename mpl::deref< iter_4 > ::type
286, typename mpl::deref< iter_5 > ::type
287, typename mpl::deref< iter_6 > ::type
288, typename mpl::deref< iter_7 > ::type
289, typename mpl::deref< iter_8 > ::type
290, typename mpl::deref< iter_9 > ::type
291> ::type type;
292};
293};
294template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700295struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700296{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700297typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 NDNBOOST_FT_ell) NDNBOOST_FT_cv ;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700298};
299template< >
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700300struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 11 >
Jeff Thompsona28eed82013-08-22 16:21:10 -0700301{
302template<typename S> struct synthesize_impl_i
303{
304private:
305typedef typename mpl::begin<S> ::type iter_0;
306typedef typename mpl::next< iter_0 > ::type iter_1;
307typedef typename mpl::next< iter_1 > ::type iter_2;
308typedef typename mpl::next< iter_2 > ::type iter_3;
309typedef typename mpl::next< iter_3 > ::type iter_4;
310typedef typename mpl::next< iter_4 > ::type iter_5;
311typedef typename mpl::next< iter_5 > ::type iter_6;
312typedef typename mpl::next< iter_6 > ::type iter_7;
313typedef typename mpl::next< iter_7 > ::type iter_8;
314typedef typename mpl::next< iter_8 > ::type iter_9;
315typedef typename mpl::next< iter_9 > ::type iter_10;
316public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700317typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10)
Jeff Thompsona28eed82013-08-22 16:21:10 -0700318< typename mpl::deref< iter_0 > ::type
319, typename mpl::deref< iter_1 > ::type
320, typename mpl::deref< iter_2 > ::type
321, typename mpl::deref< iter_3 > ::type
322, typename mpl::deref< iter_4 > ::type
323, typename mpl::deref< iter_5 > ::type
324, typename mpl::deref< iter_6 > ::type
325, typename mpl::deref< iter_7 > ::type
326, typename mpl::deref< iter_8 > ::type
327, typename mpl::deref< iter_9 > ::type
328, typename mpl::deref< iter_10 > ::type
329> ::type type;
330};
331};
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700332# undef NDNBOOST_FT_make_type
333# undef NDNBOOST_FT_make_type_impl
Jeff Thompsona28eed82013-08-22 16:21:10 -0700334