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

Реализация классов вектор и строка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пользуясь только операцией умножения, получить а5 и а13 за пять операций. http://www.cyberforum.ru/cpp-beginners/thread579024.html
Здравствуйте! Помогите с программированием пожалуйста! Нужно написать программу на языке С++. Дано вещественное число а. Пользуясь только операцией умножения, получить а5 и а13 за пять операций....
C++ Определить класс «Массив целых чисел» Определить класс «Массив целых чисел». Определить операции пересечения двух массивов; сортировки массива (максимальная оценка «хорошо>>) http://www.cyberforum.ru/cpp-beginners/thread579022.html
Не создаётся проект на платформе Visual 2008 C++
Пытаюсь создать пустой проект (Win32). Он у меня создаётся. Дальше добавляю элемент (*.срр). И при компоновки он на меня ругается. Высвечивается окно: "1>------ Построение начато: проект:...
C++ Считывание из файла с расширением .txt
Помогите пожалуйста, решить задачу: нужно считать из файла значения и записать их в переменные, созданного мной класса, все эти переменные типа int так выглядит текстовый файл: x1=10 x2=20...
C++ Написать максимально подробные комментарии к данной программе http://www.cyberforum.ru/cpp-beginners/thread579006.html
#include "stdafx.h" const int N=10000; double calculateIntegral(double x); double Function(double x); double equationFunction(double x); double findRoot(double a, double b, double epsilon); ...
C++ Написать программу сортировки Необходимо написать программу с комментариями(обязательно подробными) для сортировки массива, считывающегося из файла, причём этот массив может быть бесконечно длинным.Сортировка идёт по принципу: ... подробнее

Показать сообщение отдельно
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.08.2012, 07:07
Дубль 2.
Я несколько заблуждался в использовании в функции, принимающей r-ref, std::move, для последующей передачи аргумента, поскольку он может передаваться не только как r-reference, но и как l-reference.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <utility>
 
void overloaded(int&&)
{
    std::cout << "overloaded(int&&)" << std::endl;
}
 
void overloaded(int&)
{
    std::cout << "overloaded(int& )" << std::endl;
}
 
void first()
{
 
}
 
template <class T, class... Args>
void first(T&& var, Args&&... args)
{
    overloaded(std::forward<T>(var));
    first(std::forward<Args>(args)...);
}
 
void second()
{
 
}
 
template <class T, class... Args>
void second(T&& var, Args&&... args)
{
    overloaded(std::move(var));
    second(std::move(args)...);
}
 
int main()
{
    int a = 2;
    std::cout << "/--- with std::forward ---/" << std::endl;
    first(1, a);
    std::cout << "/----- with std::move ----/" << std::endl;
    second(1, a);
    std::cout << "/-------------------------/" << std::endl;
    return 0;
}
И пример передачи l-reference как r-reference(насколько я понимаю, это возможно только шаблонами или как показано ниже)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using T = int&;
 
void foo(T&&)
{
 
}
 
int main()
{
    int a = 2;
    foo(a);
    return 0;
}
Добавлено через 11 минут
Ну и касаемо невозможности кастования c-ref в r-ref. Полагаю, все дело в этом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
void foo(int&& a)
{
    a = 3;
    std::cout << a << std::endl;
}
 
void foo(const int& a)
{
    // a = 3; Error
}
 
int main()
{
    foo(2);
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru