boost:ref 와 그냥 reference 가 차이가 있나요?

trymp의 이미지

boost 공부하는 사람입니다.

boost:ref 를 보는데 함수로 인자를 넘길때

func(int &num) 에 인자를 넘길 때,

num 으로 넘기는 것 하고 boost:ref(num) 하고 차이가 무었인지 궁금합니다.

어차피 두가지 모두 reference 아닌가요. 복사생성자가

둘 다 호출되지 않는 것으로 확인했는데요.

왜 이런 boost API 존재하는지 궁금합니다.

twinwings의 이미지

검색하시는게 빠를텐데요...

구글에

> boost:ref difference

검색하면 바로나옵니다.

http://stackoverflow.com/questions/2561145/difference-between-boostref-and-regular-references

요약하면

템플릿 함수를 위해 설계가 되었으며, 템플릿 함수의 인수 value로 넘겨줄 때, 강제로 reference로 넘겨주기 위함

template<typename T>
void increase(T x)
{
    ++x;
}
 
int x = 0;
 
increase(&x) // x == 0
increase(boost::ref(x))// x == 1

될 것 같네요. 부스트 라이브러리 안깔아놔서 돌려보진 못했습니다.