초기화 목록과 연산자 오른쪽
초기화 목록은 변수와 개체를 초기화하는 편리한 방법이지만 용도는 다음과 같습니다. 운영자의 오른쪽에서는 제한됩니다. 이러한 상황에서 초기화 목록을 허용하는 것이 논리적인 것처럼 보이기 때문에 이는 혼란스러울 수 있습니다.
제한 이유
C 표준에 따르면 초기화 목록은 고려되지 않습니다. 표현. 연산자에 대한 인수에는 일반적으로 표현식이 필요하므로 순수 초기화 목록은 금지됩니다.
예외
초기화 목록 사용을 허용하는 몇 가지 예외가 있습니다.
근거
C 11 표준 위원회는 이니셜라이저 목록을 허용하지 않기로 결정했습니다. 파서 구현을 단순화하기 위한 연산자의 왼쪽. 왼쪽에도 허용하지 않고 오른쪽에 허용하는 것은 너무 일관성이 없었을 것입니다.
대안
다행히도 사용에 대한 대안이 있습니다. 연산자 오른쪽에 초기화 목록이 있습니다. 한 가지 옵션은 초기화 목록을 괄호로 묶어 rvalue 참조 표현식으로 변환하는 것입니다.
baz << (std::initializer_list<int>{1, -2, "foo", 4, 5});
또 다른 옵션은 적절한 유형의 임시 변수를 생성하고 초기화 목록으로 초기화하는 것입니다.
auto data = bar{1, -2, "foo", 4, 5}; baz << data;
이러한 대안은 초기화 목록을 직접 사용하는 것만큼 편리하지 않을 수 있지만 초기화 목록의 오른쪽 제한에 대한 해결 방법을 제공합니다. 연산자입니다.
위 내용은 C 연산자의 오른쪽에서 초기화 목록을 직접 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!