narrow 허용 안 된다는데 맞는 얘기임? 예를들어
long plifs[] = {25, 92, 3.0};
char slifs[3] {'h', 'i', 1122011};
위 두 문장 모두 list initialization이 narrow를 허용하지 않기 때문에 not allowed라는데,
내가 알기론 list initialization은 narrow를 허용하지 않기 때문에,
int i = 3;
char j{i];
도 허용 하지 않는다고 알고 있음(상수가 아닌 int형 변수는 컴파일 타임에 값을 결정할 수 없으므로 narrow할 가능성이 있기에).
그런데 만약 Array 초기화가 list initialization와 같은 거라면
int a = 1;
int b = 2;
char arr[2]{a, b};
도 허용되지 않아야 하는거 아님?
근데 내가 비주얼 스튜디오에서 시험해 봤을 때는 맨 위 두 문장이나 지금 예시나 잘 컴파일 되거든?
책이 잘못된걸까? 아니면 비주얼 스튜디오만 뭔가 특별한 걸까? 아니면 내가 뭔가 실수한걸까?
clang++에 std 옵션 넣고 해보니까 책대로 잘 되네. 비주얼 스튜디오만 특이한 건가?