#ifndef META_HS_BIND_HPP #define META_HS_BIND_HPP // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include template struct bind; template struct bind, TopEnv, Env> { typedef lazy::value type; }; template struct bind, TopEnv, Env> : bind::type, TopEnv, Env> {}; template struct bind, TopEnv, Env> { typedef lazy::application< typename bind::type, typename bind::type > type; }; template struct bind, TopEnv, Env> { typedef bind type; template struct apply : bind< F, TopEnv, typename boost::mpl::insert< Env, boost::mpl::pair > >::type >::type {}; }; template struct bind, TopEnv, Env> : bind {}; #endif