수색…


소개

1998 년에는 C ++을 내부 표준 언어로 만드는 표준을 처음으로 게시했습니다. 그때부터 C ++은 C ++의 다른 방언으로 발전했습니다. 이 페이지에서 이전 버전과 비교하여 모든 다른 표준 및 변경 사항에 대한 개요를 확인할 수 있습니다. 이러한 기능을 사용하는 방법에 대한 자세한 내용은보다 전문화 된 페이지에서 설명합니다.

비고

C ++이 언급 될 때 종종 "표준"에 대한 참조가 만들어집니다. 그러나 정확히 그 표준은 무엇입니까?

C ++는 오랜 역사를 가지고 있습니다. Bell Labs 내에서 Bjarne Stroustrup이 만든 작은 프로젝트로 시작하여 90 년대 초반에 꽤 인기를 얻었습니다. 여러 회사가 C ++ 컴파일러를 작성하여 사용자가 다양한 컴퓨터에서 C ++ 컴파일러를 실행할 수 있도록했습니다. 그러나 이것을 촉진하기 위해 모든 경쟁 컴파일러는 언어에 대한 단일 정의를 공유해야합니다.

이 시점에서 C 언어는 성공적으로 표준화되었습니다. 이것은 언어에 대한 정식 설명이 작성되었음을 의미합니다. 이것은 ANSI (American National Standards Institute)에 제출되었으며 검토를 위해 문서를 열어 1989 년에 출판했습니다. 1 년 후 국제 표준기구 (다른 언어로 된 두문자어를 사용하기 때문에 한 가지 형식을 선택했습니다. , ISO, 그리스어 isos에서 파생 된, 동등한 의미)는 미국 표준을 국제 표준으로 채택했습니다.

C ++의 경우 처음부터 국제적인 관심이 있음이 분명했습니다. ISO 내의 작업 그룹이 시작되었습니다 (WG21, SubCommittee 22 내). 이 작업 그룹은 1995 년경에 첫 번째 표준을 만들었습니다.하지만 프로그래머가 알다시피, 막판 기능보다 계획된 전달에 위험한 점이 전혀 없었으며 그 점이 C ++에도있었습니다. 1995 년에 STL이라는 멋진 새 라이브러리가 등장했으며 WG21에서 근무하는 사람들은 C ++ 드래프트 표준에 슬림화 된 버전을 추가하기로 결정했습니다. 당연히이 때문에 마감 기한이 누락되어서 불과 3 년 후 최종 문서가 완성되었습니다. ISO는 매우 공식적인 조직이므로 C ++ 표준은 ISO / IEC 14882라는 이름도 붙이지 않았습니다. 표준이 업데이트 될 수 있기 때문에이 정확한 버전은 14882 : 1998로 알려졌습니다.

그리고 실제로 표준을 개정 할 것을 요구했습니다. 이 표준은 매우 두꺼운 문서로, C ++ 컴파일러의 작동 방식을 정확하게 설명하는 것을 목표로합니다. 약간의 모호함조차도 수정할만한 가치가있을 수 있으므로 2003 년까지 14882 : 2003으로 업데이트가 릴리스되었습니다. 그러나 이것은 C ++에 어떤 기능도 추가하지 못했습니다. 새로운 기능은 두 번째 업데이트를 위해 계획되었습니다.

비공식적으로이 두 번째 업데이트는 C ++ 0x로 알려 졌는데, 2008 년 또는 2009 년까지 걸릴지 여부가 알려지지 않았기 때문입니다. 그 버전도 약간 지연되어 14882 : 2011가되었습니다.

운 좋게도, WG21은 그러한 일이 다시 일어나지 않기로 결정했습니다. C ++ 11은 호평을 받았으며 C ++에 다시 관심을 갖게되었습니다. 따라서 추진력을 유지하기 위해 세 번째 업데이트는 3 년 후 계획에서 출판에 이르기까지 14882 : 2014가되었습니다.

그 일은 거기에서도 멈추지 않았습니다. C ++ 17 표준이 제안되었고 C ++ 20의 작업이 시작되었습니다.

현재 작업 초안

공개 된 모든 ISO 표준은 ISO 상점 ( http://www.iso.org )에서 판매 할 수 있습니다. C ++ 표준의 작업 초안은 공개적으로 무료로 제공됩니다.

다른 버전의 표준 :

C ++ 11

C ++ 11 표준은 C ++ 표준의 주요 확장입니다. 다음 은 isocpp FAQ 에 그룹화되어있는 변경 사항의 개요와 자세한 문서로 연결되는 링크입니다.

언어 확장

일반 기능

수업

  • = 기본값 및 = 삭제
  • 기본 이동 및 복사 제어
  • 생성자 위임
  • 클래스 멤버 초기화 프로그램
  • 상속 된 생성자
  • 재정의 제어 : 재정의
  • 재정의 제어 : 최종
  • 명시 적 변환 연산자

기타 유형

  • 열거 형 클래스
  • long long - 더 긴 정수
  • 확장 된 정수 유형
  • 일반화 된 노동 조합
  • 일반화 된 POD

템플릿

  • Extern 템플릿
  • 템플릿 별칭
  • 가변성 템플릿
  • 템플릿 인수로서의 로컬 형

동시성

기타 언어 기능

  • C ++ 11에서 __cplusplus의 가치는 무엇입니까?
  • 접미사 반환 형식 구문
  • 좁히기 방지
  • 오른쪽 꺾쇠 괄호
  • static_assert 컴파일 타임 어설 션
  • 원시 문자열 리터럴
  • 속성
  • 조정
  • C99 기능

라이브러리 확장

일반

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • 쓰레기 수거 ABI
  • 튜플
  • 형질 특성
  • 함수와 바인딩
  • 정규 표현식
  • 시간 유틸리티
  • 난수 생성
  • 범위가 지정된 할당 자

컨테이너 및 알고리즘

  • 알고리즘 개선
  • 컨테이너 개선
  • unordered_ * containers
  • std :: array
  • forward_list

동시성

C ++ 14

C ++ 14 표준은 종종 C ++ 11의 버그 수정이라고합니다. 여기에는 C ++ 11의 새로운 기능을 확장 한 대부분의 변경 사항 목록 만 포함됩니다. 다음 은 isocpp FAQ 에 그룹화되어있는 변경 사항의 개요와 자세한 문서로 연결되는 링크입니다.

언어 확장

라이브러리 확장

지원 중단 / 제거됨

  • std::gets 는 C ++ 11에서 사용되지 않으며 C ++ 14에서 제거되었습니다.
  • std::random_shuffle 은 더 이상 사용되지 않습니다.

C ++ 17

C ++ 17 표준은 기능이 완벽하며 표준화를 위해 제안되었습니다. 이러한 기능을 실험적으로 지원하는 컴파일러에서는 일반적으로 C ++ 1z라고합니다.

언어 확장

라이브러리 확장

C ++ 03

C ++ 03 표준은 주로 C ++ 98 표준의 결함 보고서를 처리합니다. 이러한 결함 외에도 하나의 새로운 기능 만 추가합니다.

언어 확장

C ++ 98

C ++ 98은 C ++의 첫 번째 표준화 된 버전입니다. C의 확장으로 개발 되었기 때문에 C ++에서 C를 분리하는 많은 기능이 추가되었습니다.

언어 확장 (C89 / C90과 관련하여)

  • 클래스, 파생 클래스, 가상 멤버 함수, const 멤버 함수
  • 함수 오버로딩, 연산자 오버로딩
  • 한 줄 주석 (C-languague에서 C99 표준으로 도입되었습니다)
  • 참고 문헌
  • 신규 및 삭제
  • 부울 유형 (C99 표준으로 C 언어에 도입되었습니다)
  • 템플릿
  • 네임 스페이스
  • 예외
  • 특정 캐스트

라이브러리 확장

  • 표준 템플릿 라이브러리

C ++ 20

C ++ 20은 C ++ 17 표준을 기반으로 현재 개발중인 C ++의 표준입니다. 진행 상황은 공식 ISO cpp 웹 사이트 에서 추적 할 수 있습니다.

다음 기능은 2020 년을 목표로 한 C ++ 표준의 다음 릴리스에서 허용 된 것입니다.

언어 확장

지금은 어떤 언어 확장도 허용되지 않았습니다.

라이브러리 확장

현재 라이브러리 확장은 허용되지 않았습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow