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

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

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

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

08.01.2014, 03:18. Просмотров 224. Ответов 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?
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 03:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем разница двух перегрузок? (C++):

В чем смысл двух перегрузок одного оператора? - C++
Объясните, в чем здесь смысл перегрузки: inline bool operator == ( const char *Name ) const { return this-&gt;Name.c_str( )...

Оператор new. Динамическое выделение памяти - В чем разница двух определений массивов - C++
Подскажите, в чем разница двух определений массивов int *mas = new int; int *mas = new int; Т.е с указанием размера и без. Я...

В чем разница? - C++
Здравствуйте! Хотел узнать, в чем разница между С++ которым писали в старом добром BorlandC, в студии и VisualC++? Думал тем, что...

В чем разница? - C++
Скажите в чем разница между двумя кусками кода: std::string a; while ((std::cin&gt;&gt;a)!=&quot;Quit&quot;) { std::cout&lt;&lt;a; ...

В чем разница. - C++
Извиняюсь за тупой вопрос, но в чем разница. оператора ++ к примеру. a=b++ и a=++b ?

в чем разница? - C++
вот такая вот конструкция (условие)?ложь:истина дает такой же результат if(условие){истина}else{ложь} хотелось бы...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
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
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 06:33
Привет! Вот еще темы с ответами:

'0' и 0, в чем разница? - C++
Подскажите пожалуйста, если я напишу число в ' ' или число без кавычек, то что изменится? Код элемента(цифры)? И для чего это нужно? ...

В чем разница - C++
Здравствуйте. Я новичок, как здесь, так и в программировании, только учусь. И ищя литературу прочитывал кучу информации, наткнулся на этот...

В чем разница - C++
В чем разница между: typedef double(*Function_ptr)(double); и typedef double Function(double); Первое - это указатель на...

В чем разница между X x; и X x()? - C++
Корректный ли этот ответ?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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