>  기사  >  백엔드 개발  >  GCC 4.6.1이 std::array에 대한 초기화 목록 때문에 어려움을 겪는 이유는 무엇입니까?

GCC 4.6.1이 std::array에 대한 초기화 목록 때문에 어려움을 겪는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 06:54:28601검색

Why Does GCC 4.6.1 Struggle with Initialization Lists for std::array?

std::array와 함께 초기화 목록 사용

초기화 목록을 사용하여 여러 가지 방법으로 std::array를 생성할 수 있습니다. 그러나 GCC 4.6.1에서는 이 작업을 시도할 때 오류가 발생할 수 있습니다.

초기화 구문

초기화 목록을 사용하여 std::array를 생성하는 구문은 다음과 같습니다.

<code class="cpp">std::array<T, size> array = { { value1, value2, ..., valueN } };</code>

여기서 T는 배열의 요소 유형이고, size는 배열의 크기이며, value1~valueN은 배열의 초기 값입니다.

집계 초기화

std::array는 이를 허용하는 집계 구조체입니다. 집계 초기화됩니다. 구조체 내부의 배열을 집계 초기화하려면 추가 중괄호 세트를 사용하세요.

<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>

이 구문은 GCC 4.6.1에서 문제를 일으킬 수 있는 초기화 목록을 사용하는 생성자를 방지합니다.

컴파일러 문제

C 11 표준에서는 집계 초기화에서 추가 중괄호를 생략할 수 있다고 제안합니다. 따라서 GCC 4.6.1이 추가 중괄호 없이 std::array에 대한 초기화 목록을 컴파일할 수 없는 것은 컴파일러 버그일 가능성이 높습니다.

위 내용은 GCC 4.6.1이 std::array에 대한 초기화 목록 때문에 어려움을 겪는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.