
Lisp
Didier Verna
General
Introduction
Part I: Performance
Part II: Genericity
Because if you can read this. . .
template <template <class> class M, typename T, typename V>
struct ch_value_<M<tag::value_<T>>, V>
{ typedef M<V> ret; };
template <template <class> class M, typename I, typename V>
struct ch_value_<M<tag::image_<I>>, V>
{ typedef M<mln_ch_value(I, V)> ret; };
template <template <class, class> class M, typename T, typename I, typename V>
struct ch_value_<M<tag::value_<T>, tag::image_<I>>, V>
{ typedef mln_ch_value(I, V) ret; };
template <template <class, class> class M, typename P, typename T, typename V>
struct ch_value_<M<tag::psite_<P>, tag::value_<T>>, V>
{ typedef M<P, V> ret; };
6/77