반응형
C++14에서 달라진 점 (C++11과 비교)
C++14는 C++11의 기능을 다듬고 확장한 표준으로, 대규모 기능 추가보다는 기존 기능의 개선과 편의성 향상에 초점을 맞췄습니다. 아래는 C++11 대비 C++14에서 달라진 주요 내용을 정리한 것입니다.
1. 람다 함수의 확장
- 제네릭 람다(Generic Lambdas)
- 람다 함수의 매개변수 타입에 auto 사용 가능
-
cppauto lambda = [](auto x, auto y) { return x + y; };
- 템플릿 함수처럼 동작하는 람다 작성 가능
2. constexpr 기능 강화
- C++11의 constexpr 함수는 단순한 리턴만 가능했으나,
C++14에서는 if문, 반복문, 지역 변수 선언 등 복잡한 로직을 지원 - 더 많은 함수와 상황에서 constexpr 사용 가능.
3. 함수 반환 타입 추론
- Return Type Deduction
- 함수의 반환 타입을 auto로 지정하면, 구현부의 return문을 기반으로 타입이 자동 추론됨
-
cppauto func() { return 42; }
4. 표준 라이브러리 및 기타 개선
- Reader-Writer Locks
- 다중 스레드 환경에서 읽기/쓰기 락 지원(std::shared_timed_mutex 등)
- std::exchange
- 객체의 값을 새로운 값으로 교체하고, 이전 값을 반환하는 함수 템플릿(라이브러리 확장).
- 이진 리터럴 지원
- 0b 또는 0B 접두사로 이진수 리터럴 사용 가능
-
cppint n = 0b101010;
- [[deprecated]] 속성
- 함수, 변수 등에 deprecated 속성 부여 가능
5. 기타 언어 및 코드 스타일 관련 변화
- 변수 템플릿(Variable Templates)
- 변수도 템플릿으로 선언 가능
- decltype(auto)
- auto와 decltype의 타입 추론 결합
- 람다 캡처 초기화
- 람다 캡처 시 임의의 표현식으로 멤버 초기화 가능
- 이종 탐색(Heterogeneous Lookup)
- 연관 컨테이너에서 키 타입과 다른 타입으로 검색 가능
요약 표
C++14 개선점 및 추가 기능
구분 | C++11 | C++14 |
람다 | 일반 람다 | 제네릭 람다(매개변수에 auto 사용) |
constexpr | 단순 리턴만 가능 | if/반복문/지역변수 등 복잡한 로직 지원 |
함수 반환 타입 | 명시적 타입, 일부 auto 지원 | 모든 함수에 auto 반환 타입 추론 |
표준 라이브러리 | 기존 컨테이너, 락 | Reader-Writer 락, std::exchange 등 추가 |
리터럴 | 10진/16진 등 | 이진 리터럴(0b) 지원 |
속성 | 없음 | [[deprecated]] 속성 추가 |
타입/템플릿 | 함수/클래스 템플릿 | 변수 템플릿, decltype(auto) |
람다 캡처 | 변수 캡처만 가능 | 표현식 기반 캡처(초기화) 지원 |
C++14는 C++11의 기반 위에서 실질적인 코드 작성의 편의성과 성능, 타입 추론의 유연성을 크게 높였습니다
'Develop > C&CPP' 카테고리의 다른 글
[cpp] mutex, lock (0) | 2025.04.20 |
---|---|
[cpp] cpp17에서 달라진 점 (0) | 2025.04.20 |
[service] 윈도우 서비스 프로그램 (0) | 2025.01.05 |
[server] ThreadPool, client 접속이 많을 때. TCP Server (0) | 2025.01.05 |
[Server] work, cache, lock, 동시접근문제, 성능문제 (0) | 2025.01.05 |