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

Сообщение Re[2]: специализация для rvalue ссылок от 21.08.2020 18:34

Изменено 22.08.2020 7:00 rg45

Re[2]: специализация для rvalue ссылок
Здравствуйте, B0FEE664, Вы писали:

В принципе, все верно, только в перdой перегрузке std::is_rvalue_reference_v<Collection&> всегда будет вычисляться в false (с логическим отрицанием соответственно всегда будет true), поэтому SFINAE здесь избыточен и можно упростить до:


template<typename Collection>
void operator|(const Collection& col, int)
{
    cout<<"lvalue\n";
}

template<typename Collection>
std::enable_if_t<std::is_rvalue_reference_v<Collection&&>>
operator|(Collection&& col, int)
{
    cout<<"rvalue\n";
}
Re[2]: специализация для rvalue ссылок
Здравствуйте, B0FEE664, Вы писали:

В принципе, все верно, только в перdой перегрузке std::is_rvalue_reference_v<Collection&> всегда будет вычисляться в false (с логическим отрицанием соответственно всегда будет true), поэтому SFINAE здесь просто не дает никакого эффекта и можно упростить до:


template<typename Collection>
void operator|(const Collection& col, int)
{
    cout<<"lvalue\n";
}

template<typename Collection>
std::enable_if_t<std::is_rvalue_reference_v<Collection&&>>
operator|(Collection&& col, int)
{
    cout<<"rvalue\n";
}