저는 C++의 참조 값을 처음 사용하고 일상 생활에서 사용하는 방법을 배우고 싶습니다. 인기있는 사용법에 관한 두 가지 질문이 있습니다 : 부울 :: 참조와 부스트 :: 바인드를 사용하여 rvalue 참조를 사용합니다.부울 값 참조를 boost :: in_place 함수에 전달합니다.
- 부스트를 rvalue 심판을 사용 :: in_place
클래스를 고려, 생성자 매개 변수로를 rvalue 참조를 복용 :
struct A
: boost::noncopyable
{
A(int&&){}
};
의 지금하자이를 위해 부스트 옵션 변수를 만들려고 수업 :
void foo(int&& value)
{
boost::optional<A> opt;
// some code here
opt = boost::in_place(std::forward<int>(value)); //Error!
}
올바른 값을 전달하는 방법은 무엇입니까? 그런 예에서 ref. rvalue refs에 대한 boost :: reference_wrapper와 같은 솔루션이 있습니까? r- 수치 참조
다른 일반적인 쓰임새에 객체를 작동 바인드 펑 전달
- 을 높일 :: 함수 객체 부스트 : 바인드 펑 객체를 할당한다.
void foo(int&&) { } void bar() { boost::function<void(int&&)> func; int x = 0; func = boost::bind(foo, std::move(x)); // Compilation error (a) func = boost::bind(foo, _1); // Compilation error too (b) }
I는 해당 명령 (a) 첫 번째 호출 후에 정의 변수 값을 초래할 수 이해하지만, 명령의 (B)에도 이와 같은 문제가 없다. 그러나이 코드를 올바르게 작성하는 방법은 무엇입니까?
나는 라이브러리와 C++ 11 개 기능을 사용하지 않는 것이 좋습니다 :이 같은
은 내가 그 일을하는 것이 좋습니다 모르겠어요,하지만 당신은 부스트에서 일반 과부하를 처리 할 수 있습니다 C++ 11을 모르는 C++ 03 용으로 작성되었습니다. 그러한 용도가 지원되는지 문서를 확인하십시오. Boost.Optional 및 Boost.Function에 대한 내 지식이 최선이 아닙니다. –
부스트 라이브러리는 대개 새 standart의 새로운 기능을 사용합니다 (C++ 11이 없어도 C++ 0x 만 해당). C++ 11에서 새로운 네이티브 'bind'및 'function'을 사용하여 두 번째 예제를 확인했습니다. C++ 11에서는 '선택 사항'이 없으므로 첫 번째 예제를 확인할 수 없습니다. –