C++ 0x에 대한 리뷰 동영상인가 보다.

시간있을때 하나씩 정리를 해볼까 하는데.. 움..

'Dev > C++' 카테고리의 다른 글

C++0x 지원 컴파일러 목록  (0) 2009.05.20
C++ Refactoring  (0) 2009.04.14
asio C++ library  (0) 2008.08.22
C++ 0x - Herb Sutter의 블로그 글  (0) 2008.07.29
C++ 0x  (0) 2008.05.09

Herb Sutter 블로그의 C++ 0x 에 대한 리포트 링크 정리
http://herbsutter.wordpress.com/



http://herbsutter.wordpress.com/2007/05/10/trip-report-april-2007-iso-c-standards-meeting/

- 템플릿 별칭(aliase), 가변 템플릿 파라미터, using 용법 확장에 대한 내용들


http://herbsutter.wordpress.com/2007/09/10/trip-report-july-2007-iso-c-standards-meeting/

- 새로 추가되는 기능들에 대한 내용들
- constexpr, decltype  등...


http://herbsutter.wordpress.com/2007/11/01/trip-report-october-2007-iso-c-standards-meeting/

- C++ 0x 의 시기와 주요 컨셉에 관한 글
- nullptr 에 대한 소개
- threading, Concurrency, Atomic 에 관한 내용들


http://herbsutter.wordpress.com/2008/03/29/trip-report-februarymarch-2008-iso-c-standards-meeting/

- Lambda function and closure 에 관한 내용들


http://herbsutter.wordpress.com/2008/07/04/trip-report-june-2008-iso-c-standards-meeting/

- 초기화에 관한 내용들
- STL에서의 배열 초기화나 클래스 멤버의 초기화 문법에서의 초기화에 관한 이야기

'Dev > C++' 카테고리의 다른 글

An Overview of the Coming C++ (C++0x) Standard  (0) 2008.12.29
asio C++ library  (0) 2008.08.22
C++ 0x  (0) 2008.05.09
memory pooling - code  (0) 2008.05.01
Is Derived - code  (0) 2008.05.01

차세대 C++ 표준인 C++ 0x 의 언어적인 추가 사항 정리
(C++ 1x 가 되지 않기를 빈다... ^^;)


- UTF-8, UTF-16 지원

= u8"I'm a UTF-8 string."
= u"This is a UTF-16 string."
= U"This is a UTF-32 string."


- Template Aliases

#include <vector>

template<typename T>
class MyAllocator {
};

template<typename T>
using MyVector = std::vector<T, MyAllocator<T>>;

MyVector<int> vec;


 - Allow sizeof to apply to non-static data members

Currently the C++ Standard does not allow the following:

struct S {
   int m;
};

sizeof(S::m)


- Generalized Constant Expressions - constexpr

아래의 코드처럼 작동하기 위해 추가된것 같다
이미 C 99 표준에서는 배열크기에 대해서 상수가 아닌 지역변수도 허용되는데 그것과는 또 다른 지원방식


constexpr int Number ()
{
    return 5;
}

double array[Number()];


constexpr int square(int x)
{
    return x * x;
}

float array[square(9)];  



- 중첩된 template 선언에서 >> 연산자의 문법오류

#include <vector>

// 현재의 경우 아래의 문법이 에러가 난다
// 이유는 마지막에 >> 부분이 중첩 tempate 문법의 닫는 의미가 아닌 시프트 연산자로 인식
// C++ 0x 버전에서는 문제없이 컴파일 될수 있도록 조치
typedef std::vector<std::vector<bool>> Flags;

// 그래서 아래와 같이 해야 했다
typedef std::vector<std::vector<bool> > Flags;


- auto 키워드 추가

컴파일 타임에 자동으로 타입을 유추하여 타입을 확정해주는 auto 라는 키워드 추가

for (vector<int>::const_iterator itr = myvec.begin(); itr != myvec.end(); ++itr) {} // 타입명시

for (auto itr = myvec.begin(); itr != myvec.end(); ++itr) {} // auto 사용


- stl 컨테이너에 배열 초기화 허용

내 생각에는 {1, 2 } 의 형식을 바로 타입(ex: int p[])으로 인식할수 있게끔 된것이 아닌가 생각이 드는데 확인을 해봐야 할것같다

std::vector<double> v = { 2.3, 1.2, 6.7, 4.5  };


- for each 형식의 문법 지원

네이티브 타입만 지원하는지 컨테이너도 지원 하는지 확인 해봐야 할듯

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)     // 참조 주목
{
    x *= 2;
}


- Lambda, Closure 형식 문법 지원

boost::lambda 은 정말 놀랍다.
그런데 이런걸 언어차원에서 지원하다니..

// 기존 for 문
for(vector<Widget>::iterator i = w.begin(); i != w.end(); ++i) {
    cout << *i << " ";
}

// boost::lambda
for_each( w.begin(), w.end(), cout << _1 << " " );

// C++0x lambda
for_each( w.begin(), w.end(), []( const Widget& w ) { cout << w << " "; } );



참고 사이트 :
http://blogs.msdn.com/vcblog/archive/2007/06/04/update-on-the-c-0x-language-standard.aspx
http://www.jong10.com/246

'Dev > C++' 카테고리의 다른 글

asio C++ library  (0) 2008.08.22
C++ 0x - Herb Sutter의 블로그 글  (0) 2008.07.29
memory pooling - code  (0) 2008.05.01
Is Derived - code  (0) 2008.05.01
C++에서 프로퍼티 구현하기  (0) 2008.05.01

+ Recent posts