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

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

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

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

08.01.2014, 03:18. Просмотров 218. Ответов 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++
Объясните, в чем здесь смысл перегрузки: inline bool operator == ( const char *Name ) const { return this-&gt;Name.c_str( )...

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

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

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

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

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

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

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

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

Шаблоны. В чем разница? - C++
В чем разница между этими объявлениями? Вроде и так можно и этак. А как правильней? template &lt;class T&gt; struct list { T value; ...

Объясните в чем разница - C++
Здравствуйте! У меня такой вопрос в чем разница записи switch(n) { case 1: cout &lt;&lt; end; case 2: cout &lt;&lt; endl; ...

Подскажите в чем разница - C++
#include &lt;fstream&gt; #include &lt;cmath&gt; using namespace std; int main() { ifstream x(&quot;INPUT.TXT&quot;); ofstream...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
6946 / 4117 / 581
Регистрация: 29.11.2010
Сообщений: 10,916
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     В чем разница двух перегрузок?
Ответ Создать тему
Опции темы

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