C++11 중 std::referencewrapper의 이해
std::reference_wrapper
void func(int param){
std::cout << param << std::endl;
}
int a = 3;
std::reference_wrapper ra = a;
func(ra);
std::reference_이 가능하다, ~할 수 있다,...
template
class reference_wrapper {
public:
// types
typedef T type;
// construct/copy/destroy
reference_wrapper(T& ref) noexcept : _ptr(std::addressof(ref)) {}// ref
reference_wrapper(T&&) = delete;// ,
reference_wrapper(const reference_wrapper&) noexcept = default;// reference_wrapper
// assignment
reference_wrapper& operator=(const reference_wrapper& x) noexcept = default;
// access
operator T& () const noexcept { return *_ptr; }// T&
T& get() const noexcept { return *_ptr; }
template< class... ArgTypes >
std::invoke_result_t
operator() ( ArgTypes&&... args ) const {
return std::invoke(get(), std::forward(args)...);
}
private:
T* _ptr;
};
std::reference_wrapper 사용 실례
#include
#include
using namespace std;
void func(int a, int b)
{
cout << "a = " << a < f0 = func;
f0(5,7);
auto f1 = std::ref(func);
f1(5,7);
// bind
int i = 10;
auto f2 = std::bind(func1, i);
auto f3 = std::bind(func1, std::ref(i));
i = 30;
f2();
f3();
return 0;
}
//a = 5,b = 7
//a = 5,b = 7
//i = 10
//i = 30
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.