anchor.diff:  };
   <%}%>
   <%}%>
  -
  -
  -<%0.upto(GENERATION_LIMIT) {|i|%>
  -template <typename A0<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
  -tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> make_tuple(typename tuple_type<A0>::transparent_reference a0<%1.upto(i) {|j|%>, typename tuple_type<A<%=j%>>::transparent_reference a<%=j%><%}%>)
  -{
  -	return tuple<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>>(a0<%1.upto(i) {|j|%>, a<%=j%><%}%>);
  -}
  -<%}%>
  -
   
   template <>
   struct tuple<> {
  
positive.code: 	<%0.upto(i) {|j|%>
  	A<%=j%> a<%=j%>;<%}%>
  };
  <%}%>
  
  }  // namespace type
  
negative.code: 	typedef const T& transparent_reference;
  };
  
  <%0.upto(GENERATION_LIMIT) {|i|%>
  <%0.upto(i) {|j|%>
  template <typename A0<%1.upto(i) {|k|%>, typename A<%=k%><%}%>>
  