C++에서 C++17의 주요 특징은?
A1: C++17 표준은 2017년에 공식 발표되었습니다.
Q2: C++17에서 도입된 주요 언어 기능은 무엇인가요?
A2: 주요 언어 기능으로는 구조적 바인딩(structured bindings), if constexpr, fold expressions, inline 변수, constexpr if, 그리고 덧붙여진 이번 초기화 구문 등이 있습니다.
Q3: 구조적 바인딩(structured bindings)이란 무엇인가요?
A3: 구조적 바인딩은 튜플, 배열, 구조체 등의 여러 값을 손쉽게 개별 변수로 분해하여 바인딩(binding)할 수 있는 기능입니다. 예를 들어 `auto [x, y] = point;`와 같이 사용합니다.
Q4: if constexpr 문은 어떤 용도로 사용되나요?
A4: if constexpr는 컴파일 시간 조건문으로, 조건이 false인 분기는 컴파일 시 제거되어 실행 코드에 포함되지 않아 템플릿 메타프로그래밍에 매우 유용합니다.
Q5: Fold expressions란 무엇인가요?
A5: Fold expression은 템플릿 파라미터 팩을 손쉽게 순회하고 집계할 수 있도록 도와주는 문법으로, 예를 들어 `(... + args)`와 같이 가변 인자들의 합을 계산할 수 있습니다.
Q6: inline 변수는 어떤 문제를 해결하나요?
A6: inline 변수는 헤더 파일에 정의된 전역 변수나 정적 멤버 변수의 다중 정의 문제를 해결하며, 여러 컴파일 단위에서 중복 정의 없이 사용할 수 있게 해줍니다.
Q7: std::optional이란 무엇이며, C++17에 추가된 이유는?
A7: std::optional은 값이 있을 수도 있고 없을 수도 있는 상태를 표현하는 타입으로, null 대신 명시적으로 '값 없음'을 나타내기 위해 C++17에 추가되었습니다.
Q8: std::variant와 std::any의 차이점은 무엇인가요?
A8: std::variant는 정해진 여러 타입 중 하나만 가지는 타입 안전 공용체이며, std::any는 임의의 타입을 담을 수 있는 타입 안전성은 낮지만 더 유연한 컨테이너입니다.
Q9: 문자열 리터럴에 constexpr이 적용된 변화가 있나요?
A9: 네, C++17부터는 std::string_view를 통해 비복사 문자열 조작이 가능해지고, 기존 C 스타일 문자열을 constexpr 컨텍스트에서 보다 쉽게 다룰 수 있게 되었습니다.
Q10: C++17에서 표준 라이브러리에 추가된 주요 기능은 무엇인가요?
A10: 주요 기능으로는 std::filesystem(파일 시스템 라이브러리), std::optional, std::variant, std::any, std::string_view, 병렬 알고리즘(parallel algorithms) 등이 포함됩니다.
작성자:
최서율 [비회원]
| 작성일자: 1년 전
2024-09-20 17:11:36
조회수: 141 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 141 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.