Вопросы по теме 'rvalue-reference'
Может ли кто-нибудь объяснить ссылки на rvalue в отношении исключений?
Допустим, у меня есть этот класс исключений:
struct MyException : public std::exception
{
MyException(const std::exception &exc) : std::exception(exc)
{
cout << "lval\n";
}
MyException(std::exception...
1310 просмотров
schedule
19.10.2022
Имеет ли смысл использовать идиому перемещения и замены для подвижного и некопируемого класса?
Если у меня есть класс, например
class Foo{
public:
Foo(){...}
Foo(Foo && rhs){...}
operator=(Foo rhs){ swap(*this, rhs);}
void swap(Foo &rhs);
private:
Foo(const Foo&);
// snip: swap code
};
void swap(Foo&...
2001 просмотров
schedule
04.10.2022
Идеальная пересылка члена объекта
Предположим, у меня есть два struct :
struct X {};
struct Y { X x; }
У меня есть функции:
void f(X&);
void f(X&&);
Как мне написать функцию g() , которая принимает Y& или Y&& , но идеально пересылает...
1228 просмотров
schedule
30.10.2023
вычет эталонного шаблона rvalue
template<class U>
void f( U && v)
{
std::cout << typeid(v).name() << "\n"; //'int' in both cases
if( boost::is_same<int&&,U>::value )
{
std::cout << "reach here\n"; //only with...
565 просмотров
schedule
12.04.2024
Перегрузка числового векторного оператора + ссылочный параметр rvalue
У меня есть числовой класс шаблона вектора ниже (вектор для числовых расчетов). Я пытаюсь сделать возможным написать D=A+B+C , где все переменные являются Vector объектами. A , B и C изменять не следует. Моя идея состоит в том, чтобы...
3443 просмотров
schedule
03.02.2024
Ссылки на Rvalue и дизайн классов
Я пытался оценить, как ссылки rvalue влияют на дизайн класса. Скажем, у меня есть существующий класс, как показано ниже.
class X
{
string internal;
public:
void set_data(const char* s)
{
internal = s;
}
..
..
..
//other stuff...
181 просмотров
schedule
24.04.2024
Вперед или двигаться
Являются ли они допустимым использованием перемещения и вперед? Являются ли f3 и f4 одинаковыми? Опасно ли это делать? Спасибо!
#include <utility>
class A {};
A f1() {
A a;
return a; // Move constructor is called
}
A...
174 просмотров
schedule
26.09.2022
Считается ли безопасным получение адреса ссылки rvalue перед перемещением?
Я играю с семантикой перемещения и ссылками [r|l]value, чтобы научиться использовать их в реальных программах. Рассмотрим следующий код:
// Item is a heavy class having move ctor and assignment but no copy.
std::map<std::string, Item*>...
1164 просмотров
schedule
10.11.2022
init-capture для ссылки на rvalue в Visual Studio 2013
Я хочу использовать System.Threading.Tasks.Task.ContinueWith .net в C++, поэтому я пишу следующую функцию.
#include <iostream>
#include <functional>
#include <future>
template <typename Func, typename Ret>
auto...
979 просмотров
schedule
30.01.2024
Справочник по Rvalue
Это неопределенное поведение? Если нет, то каково поведение?
// In some external library with, say, header "a.h"
void f(int &&x) {
x = 5; // Which memory does this assignment apply to?
}
#include "a.h"
int main() {
f(7);
// At...
81 просмотров
schedule
10.10.2022
Компилятор не ругается, когда vector‹char›&& привязан к vector‹char›&
Я использую Visual Studio 2013 Express.
class B{
public:
vector<char>& a;
int& b;
B(vector<char>& i,int& c) :a(i),b(c) {}
};
int main(){
int l=3;
vector<char> h;
shared_ptr<B> bb...
122 просмотров
schedule
28.10.2022
Передача Lvalue в параметр RValue
Я хотел знать, как это возможно?
template<typename T>
void Test(T&& arg)
{
arg = 14;
}
int a = 23;
Test(a);
Мой вопрос заключается в том, что для функции Test требуется аргумент типа Rvalue, однако, похоже, она также...
252 просмотров
schedule
10.10.2022
Шаблонная функция С++ 11 с вызовом параметра rvalue
В каком-то классе O у меня есть шаблонная функция test2 :
struct A{int value;};
struct O{
A value;
template<typename Args>
static void test2(Args &&args){
std::cout << std::endl << "!!!" <<...
224 просмотров
schedule
25.09.2022
Есть ли варианты использования std::forward с prvalue?
Наиболее распространенное использование std::forward - это, ну, в общем, совершенная пересылка пересылаемой (универсальной) ссылки, например
template<typename T>
void f(T&& param)
{
g(std::forward<T>(param)); // perfect...
969 просмотров
schedule
05.01.2024
Возврат rvalue - что не так с этим кодом?
Я наткнулся на следующий фрагмент кода
std::string&& test()
{
std::string m="Hello";
return (std::move(m));
}
int main()
{
std::string&& m = test();
}
Я понимаю, что приведенный выше код неверен и небезопасен, но...
186 просмотров
schedule
22.11.2023
Имеет смысл объявлять методы RValue (например, void operation() &&;) виртуальными C++1x
Это может быть несколько экзотично: (я работаю над обновлением нового стандарта С++). Есть ли смысл объявить метод RValue в классе, например. void operation() &&; virtual ? Я не могу представить, потому что операция применима только к...
253 просмотров
schedule
28.10.2022
Разрешают ли ссылки const rvalue дополнительную оптимизацию для компилятора?
Модификатор const для параметра функции в C++ означает, что эта функция не может изменить значение параметра, но не гарантирует, что оно не может быть изменено кем-то другим во время выполнения функции. Таким образом, компилятор не может выполнять...
395 просмотров
schedule
09.11.2022
Как получить разные перегрузки для ссылок rvalue и lvalue с типом, выведенным из шаблона?
У меня есть функция foo , принимающая параметр по ссылке, и я хочу, чтобы она по-разному действовала на ссылки rvalue и lvalue. (Я также должен упомянуть, что foo() уважает константу; это не меняет значение, на которое ссылаются.) Я знаю, что если...
700 просмотров
schedule
22.03.2024
Rvalue и перенаправление ссылок на массивы в стиле C
Играя с rvalue и пересылая ссылки на массивы в стиле C, я наткнулся на странное поведение. Сначала я подумал, что это связано с моим непониманием того, как массивы в стиле C связываются со ссылками && , но теперь, после прочтения этого...
105 просмотров
schedule
05.11.2023
Путаница между ссылкой на rvalue и rvalue в книге
(Я искал книгу [c++] "Функциональное программирование на C++" , и дал только 4 нерелевантных результата.)
Я читаю Функциональное программирование на C++ от Ивана Чукича , и на странице 118 есть предложение, которое я не уверен, что понял....
79 просмотров
schedule
07.02.2024