C++0xには、boost::mpl::if_c相当の、コンパイル時if文(式)が入るようです。
// <type_traits> namespace std { template <bool, class T, class F> struct conditional; }
conditionalメタ関数の第1引数はコンパイル時の条件、
第2引数はtrueだった場合に返る型、第3引数はfalseだった場合に返る型です。
struct lambda_tag; struct not_lambda_tag; template <class T> struct get_regular_tag { typedef typename std::conditional< std::is_constructible<T>::value || std::has_copy_assign<T>::value, not_lambda_tag, lambda_tag >::type type; };