Сообщение 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 здесь избыточен и можно упростить до:
В принципе, все верно, только в пер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 здесь просто не дает никакого эффекта и можно упростить до:
В принципе, все верно, только в пер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";
}