2011-01-01 6 views
3

C++ 0x에서 (별개의 생각으로) 디스에 인터 티드 앨리어싱을 생각하고 있습니다. 컴파일러에 의해 시행되는 const 정확성과 비슷하게 구현 될 수 있는지를 생각하고있었습니다. 그런 일에 대한 요구 사항은 무엇입니까? 이것이 더 많은 실험적인 실험이기 때문에, 나는 레거시 코드를 파괴하거나 언어의 절반을 재정의하고 그런 종류의 것을 재정의하는 솔루션을 보아서 기쁘게 생각합니다.포인터 앨리어싱 - C++ 0x

프로그래머가 약속 한 C99의 코드는 restrict입니다. 그것은 집행되어야한다.

unique_ptr을 라이브러리에 포함시키지 말고 언어의 일부로 생각하고있었습니다. 그런 식으로 컴파일러는 특별한 최적화를 수행하고 필요할 경우 고유 한 포인터 클래스를 작성할 수 있습니다.

+0

고유/공유 포인터가 라이브러리에서 구현되었지만 언어의 일부라는 생각에 놀랐 기 때문에 기쁩니다. 최적화 가능성에 대한 관찰 외에도 실제 포인터와 같은 공변 리턴 유형으로 스마트 포인터를 사용할 수 있음을 실제로보고 싶습니다. – mmocny

+0

큰 질문입니다. 나는 이것이 [의존형] (http://en.wikipedia.org/wiki/Dependent_type)이라고 불리는 것을 필요로 할 것이라고 생각하며, C++에서 전반적인 거대한 부분 없이는 할 수 없다. 템플릿에있는 것이 아니라 컴퓨터 과학에서 나온 것입니다.) – GManNickG

+2

제안 : 해당 기능이 이미 존재하는 것처럼 코드 예제를 추가하십시오 ;-) – umlcat

답변

1

표준 C++ 라이브러리 (std::unique_ptr 포함) 은 언어의 일부인입니다.

또한 준수 프로그램은 선언 및 정의를 네임 스페이스 std에 추가 할 수 없습니다. 정확히의 일부를 언어 구현 컴파일러 자체의 일환으로 구현 된 그 동작을한다 그리고 컴파일러는 무료입니다 -

std::unique_ptr<T>의 인스턴스를보고하면, 컴파일러는이 인스턴스의 동작에 대한 모든을 알고있다 C++ 표준의 보증에서 나오는 "특별 최적화"를 수행합니다.

GCC는 동일한 사고 방식에서 나온 사례의 예로서 호스트 된 모드에서 표준 C99 함수를 사용하여 이미이를 수행합니다. 즉, 표준 함수 호출을 인라인 insn 시퀀스 또는 다른 함수 호출로 바꿀 수 있습니다 왜냐하면 GCC는 함수의 이름을 아는 것만으로 정확한 의미를 알기 때문입니다.