"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > GCC 4.6.1이 std::array에 대한 초기화 목록 때문에 어려움을 겪는 이유는 무엇입니까?

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

2024년 12월 22일에 게시됨
검색:128

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

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

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

초기화 구문

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

std::array array = { { value1, value2, ..., valueN } };

여기서 T 배열의 요소 유형이고, size는 배열의 크기이고, value1부터 valueN까지는 배열의 초기 값입니다.

Aggregate 초기화

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

std::array<:string> strings = {{ "a", "b" }};

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

컴파일러 문제

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3