«rvalue-reference» 태그된 질문

rvalue 참조는 rvalue에 대한 참조를 나타내는 C ++ 11의 새로운 언어 기능입니다. 참조 축소와 함께 이동 의미 체계와 완벽한 전달을 구현하고 활성화하는 데 사용됩니다.

4
C ++ 11에서 T && (더블 앰퍼샌드)는 무엇을 의미합니까?
나는 C ++ 11의 새로운 기능 중 일부를 살펴 보았으며 내가 주목 한 것은 이중 앰퍼샌드와 같은 변수를 선언하는 것 T&& var입니다. 처음에,이 짐승은 무엇입니까? Google에서 이와 같은 구두점을 검색 할 수 있기를 바랍니다. 정확히 무엇을 의미합니까? 언뜻보기에는 이중 참조 인 것처럼 보이지만 (C 스타일 이중 포인터와 같은 T** var) …

6
std :: forward를 사용하는 주요 목적은 무엇이며 어떤 문제를 해결합니까?
완벽한 전달에서는 std::forward명명 된 rvalue 참조 t1와 t2명명되지 않은 rvalue 참조 로 변환하는 데 사용됩니다 . 그 목적은 무엇입니까? lvalue로 & 를 inner남겨두면 호출 된 함수에 어떤 영향을 미칩니 까?t1t2 template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11 rvalue 및 이동 의미 론적 혼란 (return statement)
rvalue 참조를 이해하고 C ++ 11의 의미를 이동하려고합니다. 이 예제들 사이의 차이점은 무엇이며 어떤 것들은 벡터 복사를하지 않을 것입니까? 첫 번째 예 std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); 두 번째 예 std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = …

6
람다에서 캡처 이동
C ++ 11 람다에서 이동 (rvalue 참조라고도 함)으로 어떻게 캡처합니까? 다음과 같이 쓰려고합니다. std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };



1
variadic 함수의 모든 인수에 대해 std :: forward를 어떻게 호출합니까?
난 그냥 일반 개체 팩토리를 작성하고 부스트 전 처리기 메타 라이브러리를 사용하여 가변 템플릿을 만들었습니다 (2010을 사용하고 지원하지 않음). 내 함수는 rval 참조를 사용하고 std::forward완벽한 포워딩을 수행하기 위해 C ++ 0X가 나오고 표준 컴파일러가있을 때 실제 가변 템플릿으로이 작업을 수행 할 것이라고 생각했습니다. 그래도 내가 std::forward논쟁을 불러 일으키겠습니까? template <typename …


1
지정된 템플릿 매개 변수가있는 C ++ 11 make_pair가 컴파일되지 않음
나는 -std = c ++ 11이 활성화 된 상태에서 g ++ 4.7 (나중 스냅 샷 중 하나)을 가지고 놀았습니다. 기존 코드베이스의 일부를 컴파일하려고했는데 실패한 경우가 다소 혼란 스러웠습니다. 누군가가 무슨 일이 일어나고 있는지 설명해 주시면 감사하겠습니다. 코드는 다음과 같습니다. #include <utility> #include <iostream> #include <vector> #include <string> int main ( …

5
RValue Reference (&&)의 반환이 유용한 경우가 있습니까?
함수 가 RValue 참조를 반환해야하는 이유가 있습니까? 기술, 트릭, 관용구 또는 패턴? MyClass&& func( ... ); 일반적 으로 참조 를 반환 하는 위험을 알고 있지만 때때로 우리는 어쨌든 그렇게합니다. 그렇지 않습니까? T& T::operator=(T)관용적 인 예입니다. 하지만 T&& func(...)어때요? 그렇게함으로써 얻을 수있는 일반적인 장소가 있습니까? 클라이언트 코드와 비교하여 라이브러리 또는 API …

3
Lambda 클로저 lvalue는 rvalue 참조 매개 변수로 전달 될 수 있습니다.
lvalue람다 클로저는 항상 rvalue함수 매개 변수 로 전달 될 수 있다는 것을 알았습니다 . 다음의 간단한 데모를 참조하십시오. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: …

2
왜 열거 형 변수가 rvalue입니까?
예: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } 이것을 컴파일 할 때 다음과 같은 오류가 발생합니다. <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.