프로그래밍/c++

c++11과 14의 brace-or-equal-initializer

제페 2016. 5. 3. 16:33
반응형

c++11 표준에 추가된 brace or equal initializer 코드로 보자면 이런 거다.


1
2
3
4
5
6
7
8
9
10
 
// c++11에선 not aggregate type
// c++14에선 aggregate type
struct flag
{
    const int bit = 0;
    const wchar_t* name = L"";
    const int sign = 0;
};
 
cs


위의 코드는 c++11에서는 유효하지만 aggregate 타입이 아니게 된다는 애매한 부분이 생긴다. 그러나 c++14 표준부터 위 코드 역시 aggregate 타입이 되며 c++14부턴 아래 코드 컴파일에 성공한다.


1
2
3
4
 
// c++14 표준에선 성공, c++11 표준에선 실패
flag f{ 1"hello"1 };
 

cs


이에 대한 사항은 다음에서 확인할 수 있다. (http://en.cppreference.com/w/cpp/language/aggregate_initialization)

반응형