// fib(0) to fib(10), each line a tuple: some characters, the counter, and the call // ::declval() pulls the value back out of a call result so it can go into ::sum ::define< ::name<'f', 'i', 'b'>, ::parameters<::name<'n'>>, ::sequence< ::enable_if_t< ::less<::value_of<::name<'n'>>, ::difference<'C', 'A'>>::value, ::sequence<::return<::decltype(::value_of<::name<'n'>>)>::commit> >::commit, ::return< ::decltype( ::sum< ::declval< ::invoke_result_t< ::name<'f', 'i', 'b'>, ::arguments< ::decltype(::sum<::value_of<::name<'n'>>, ::difference<'A', 'B'>>) > > >(), ::declval< ::invoke_result_t< ::name<'f', 'i', 'b'>, ::arguments< ::decltype(::sum<::value_of<::name<'n'>>, ::difference<'A', 'C'>>) > > >() > ) >::commit > >::commit; ::declare<::name<'i'>, ::decltype(::difference<'A', 'A'>)>::commit; ::repeat< ::difference<'L', 'A'>, ::sequence< ::emit< ::tuple< ::integral_constant<::char, ::difference<'f', '\0'>>, ::integral_constant<::char, ::difference<'i', '\0'>>, ::integral_constant<::char, ::difference<'b', '\0'>>, ::integral_constant<::char, ::difference<'(', '\0'>>, ::decltype(::value_of<::name<'i'>>), ::integral_constant<::char, ::difference<')', '\0'>>, ::integral_constant<::char, ::difference<' ', '\0'>>, ::integral_constant<::char, ::difference<'-', '\0'>>, ::integral_constant<::char, ::difference<'>', '\0'>>, ::integral_constant<::char, ::difference<' ', '\0'>>, ::invoke_result_t< ::name<'f', 'i', 'b'>, ::arguments<::decltype(::value_of<::name<'i'>>)> > > >::commit, ::declare< ::name<'n', 'e', 'x', 't'>, ::decltype(::sum<::value_of<::name<'i'>>, ::difference<'B', 'A'>>) >::commit, ::undeclare<::name<'i'>>::commit, ::declare<::name<'i'>, ::decltype(::value_of<::name<'n', 'e', 'x', 't'>>)>::commit, ::undeclare<::name<'n', 'e', 'x', 't'>>::commit > >::commit;