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

особенности передачи по "&&" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шаблон класса строк - ошибка компиляции http://www.cyberforum.ru/cpp-beginners/thread923779.html
Добрый вечер. Пытаюсь выполнить упражнение с учебника. Gcc выдаёт следующее: /home/ilyuha21st/Projects/qtcreator/cpp_some1/main.cpp:148: error: need 'typename' before 'String<C>::Cref' because 'String<C>' is a dependent scope #include <iostream> #include <cstring> template<class C> class String { struct Srep; Srep* rep; class Cref;
C++ Явная специализация, зачем она нужна?(Шаблоны функций) Какой смысл в явной специализации, когда есть перегрузка? если можно, и примерчик) я себе уже в голову вбил, и тут надо чем-то тяжелым выбивать, что специализация - нужная вещь XD и если можно, литературу хорошую именно на эту тему(Шаблоны функций). спасибо :) http://www.cyberforum.ru/cpp-beginners/thread923763.html
Bool C++
Обьясните мне, как они pаботают и где их пpименять =( Вот с помощью учебника написал пpогу #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { int a=2;
C++ Задачка на вывод чисел на естественном языке
Составить программу, которая читает натуральное число в десятичном представлении, а на выходе выдаёт это же число в десятичном представлении и на естественном языке. вот от 0-99 получилось вроде как, а вот с сотнями не получается. Делал через массивы. Если кому не сложно, исправьте что не так, ну или скажите как правильно сделать. Вот код. #include<stdio.h> #include<math.h>...
C++ Змейка http://www.cyberforum.ru/cpp-beginners/thread923709.html
Можно пожалуйста самую простую змейку консольную на c++ вобще самую простую без очков без всяких дополнений просто змейка ограда для нее и яблочко
C++ Ошибка в простой программе #include<iostream> #include<string> using namespace std; string recyrs() { string parol,parol1="12345"; cout << "Vvedit parol" <<endl; cin >> parol; подробнее

Показать сообщение отдельно
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 04:12  [ТС]     особенности передачи по "&&"
Цитата Сообщение от gray_fox Посмотреть сообщение
можно погуглить reference collapsing rules
я погуглил, пока въезжаю...но суть вопроса такая,(вопроса №1):
bar принимает 42(rvalue) по &&. а внутри него foo использует 42 как const int&, а не как int&&

Добавлено через 1 час 29 минут
оформлю свой вопрос в код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
void foo(const int&)
{    std::cout << "Hello! I'm foo(const int&)" << std::endl;  }
void foo(int&&)
{  std::cout << "Hello! I'm foo(int&&)" << std::endl; }
template <class T>
void bar(T&& t)
{   foo(std::move(t));
    foo(std::forward<T>(t));
    foo(t);
}
int main()
{    int i=45;
    bar(42);  bar(i);
/*результат запуска:
Hello! I'm foo(int&&)    // std::move возвращает &&
 
Hello! I'm foo(int&&)      //forward возвратит && только если не сможет возвратить &
                           // в даннном случае(bar(42)) не смог => int&&
Hello! I'm foo(const int&) // ПОЧЕМУ!!!!!!!
 
Hello! I'm foo(int&&)      // std::move возвращает &&
 
Hello! I'm foo(const int&) //forward возвратит && только если не сможет возвратить &
                           // в даннном случае(bar(i)) смог => const int&
 
Hello! I'm foo(const int&) // изначально на этапе создания ф-ции из шаблона T&& превратилось в T&
                           // т.к. int i обладает адресом и является lvalue
*/
    return 0;
}
 
Текущее время: 22:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru