2012-12-07 3 views

답변

7

std::addressof은 귀하의 목적에 부합 할 수 있습니다. 유형에 해당 운영자에 대한 과부하가있는 경우이 동작은 일반 operator&과 약간 다릅니다.

+0

C++이 아닌 11 가지 방법을 알고 있습니까? C++ 03이 필요합니다. 에 주소가 있습니다. –

+0

@ mezhaka 원하는 기능에 따라 나만의 것을 만들 수 있습니다. 내 대답에는 링크가 가능한 구현이 있습니다. – juanchopanza

+0

@juanchopanza : C 스타일의 캐스트'(char &)'가'T'가'operator char &'를 오버로드 할 경우'static_cast'라는 것을 근거로 무언가를 놓치고 있습니까? http://ideone.com/7aGun5 –

6

당신이 찾고있는 것이 std::addressof이라고 생각합니다.

+0

그리고 AdaptableUnaryFunction이 아닌 함수이기 때문에'std :: function' 또는'std :: ptr_fun'으로'compose1'과 함께 사용할 수 있습니다. 아니'compose1' 표준입니다. –

+0

C++이 아닌 11 가지 방법을 알고 있습니까? C++ 03이 필요합니다. 에 주소가 있습니다. –

+2

@ mezhaka : C++ 03에서는 직접 작성하거나 Boost를 사용해야합니다. 복잡하지는 않습니다. 트릭은 주소를 가져온 다음'T * '로 다시 캐스팅하여'char '로 캐스팅하여'T '에 대한'연산자 '오버로드를 피하는 것입니다. "실제"주소가 필요하지 않으면 (즉, 오버로드 된 연산자 '를 호출하는 것이 행복하다면), 더 간단 해집니다 : template T * 앰퍼샌드 (T & t) {return & t; }'. –