Date
2009-07-04.00:00:00
Message id
342

Content

[ 2009-07-04 Howard adds: ]

Here's a use case which demonstrates the syntactic niceness which Alisdair describes:

#define requires(...) class = typename std::enable_if<(__VA_ARGS__)>::type

template <class T, class U,
    requires(!is_lvalue_reference<T>() ||
              is_lvalue_reference<T>() && is_lvalue_reference<U>()),
    requires(is_same<typename base_type<T>::type,
                     typename base_type<U>::type>)>
inline
T&&
forward(U&& t)
{
    return static_cast<T&&>(t);
}