2013-07-08 15 views
3

std::initializer_list<T>::iteratorrandom_access_iterator 개념 대신 네이 키드 포인터 T const*으로 정의 되었습니까?initializer_list 반복자 정의의 선택

+1

포인터는 임의 액세스 반복자입니다. 나는 표준이'initializer_list'에 대해 무엇을 말하는지 알지 못한다. (표준을 따르는 모습이다.) 그러나 컨테이너의 반복자가 포인터가 될 수있다. – chris

+0

@chris - 물론 다른 모든 표준 컨테이너와 다른 점은 궁금합니다. –

+0

처음에는 컨테이너가 아닙니다. 아마도 단순함이 한 요인이었을 것입니다. 나는 확실히 말할 수 없다. – chris

답변

5

이유는 표준

섹션 18.9

형 initializer_list의 목적은 유형 CONST E. [참고 객체들의 어레이에 대한 액세스를 제공로부터이 작은 TID 비트로부터 아마 : 한 쌍의 포인터 또는 포인터 + 길이는 initializer_list에 대한 명백한 표현입니다. initializer_list는 8.5.4에서 지정된 과 같이 초기화 프로그램 목록을 구현하는 데 사용됩니다. 이니셜 라이저 목록을 복사해도 기본 요소 인 요소는 복사되지 않습니다. -end 노트]

이 나타냅니다 자신의 반복자는 "랜덤 액세스 반복자"유형에 랩을 직접 포인터가 아니라 왜 아마 인, 포인터의 의미가 아닌 값의 의미를해야합니다 복사 initializer_lists.

AFAIK 이것은 값 의미와 반대되는 포인터 의미론을 갖기 위해 유일한 표준 "컨테이너"입니다 (여기에 인용 부호가 있음).