Информация об изменениях

Сообщение using for SFINAE от 02.03.2017 7:44

Изменено 02.03.2017 7:50 night beast

using for SFINAE
Сегодня в группе std-proposals наткнулся на интересное применения using для SFINAE.
Раньше не задумывался о таком применении. Возможно кому-нибудь еще пригодится:

template<class T, std::enable_if_t<!std::is_reference<T>::value, bool> = true>
using rval = T;

template<class T>
void f(rval<T>&&)
{
    std::cout << "rvalue_reference\n";
}

template<class T>
void f(T&)
{
    std::cout << "lvalue_reference\n";
}


int main()
{
    int i = 0;
    f(0);
    f(i);
}
using for SFINAE
Сегодня в группе std-proposals наткнулся на интересное применение using для SFINAE.
Раньше не задумывался о такой возможности. Возможно кому-нибудь еще пригодится:

template<class T, std::enable_if_t<!std::is_reference<T>::value, bool> = true>
using rval = T;

template<class T>
void f(rval<T>&&)
{
    std::cout << "rvalue_reference\n";
}

template<class T>
void f(T&)
{
    std::cout << "lvalue_reference\n";
}


int main()
{
    int i = 0;
    f(0);
    f(i);
}