Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gromo
 Аватар для gromo
368 / 267 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

В чем разница двух перегрузок? - C++

08.01.2014, 03:18. Просмотров 203. Ответов 1
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// move.h
template<typename _Tp>
    constexpr _Tp&&
    forward(typename std::remove_reference<_Tp>::type& __t) noexcept
    { return static_cast<_Tp&&>(__t); }
 
template<typename _Tp>
    constexpr _Tp&&
    forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
    {
      static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
            " substituting _Tp is an lvalue reference type");
      return static_cast<_Tp&&>(__t);
    }
И для чего 2-я падает, когда передаем LValue?
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 03:18     В чем разница двух перегрузок?
Посмотрите здесь:

C++ В чем разница.
В чем разница? C++
C++ в чем разница?
C++ В чем разница
Подскажите в чем разница C++
C++ Объясните в чем разница
В чем разница C++
C++ В чем разница?
Шаблоны. В чем разница? C++
C++ Оператор new. Динамическое выделение памяти - В чем разница двух определений массивов
C++ '0' и 0, в чем разница?
C++ В чем смысл двух перегрузок одного оператора?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
08.01.2014, 06:33     В чем разница двух перегрузок? #2
Перегрузка идет по типу ссылок - lvalue и rvalue.
В случае с rvalue, проверяем на стадии компиляции, не является ли тип _Tp ссылкой lvalue (Type&). Если все верно (является Type или Type&&), то реализуем(кастуем к) rvalue на основе нашего объекта. Таким образом, реализуем move-семантику.

Запрещено потому что
Type&& & в итоге даст Type&. Так работает свертка ссылочных типов
http://www.rsdn.ru/article/cpp/Cpp11NewStd.xml
Yandex
Объявления
08.01.2014, 06:33     В чем разница двух перегрузок?
Ответ Создать тему
Опции темы

Текущее время: 21:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru