Я узнаю о новой возможности создания C++ 11. Написал небольшую программу:Uniform Инициализация и аргументы конструктора по умолчанию в C++ 11
#include <iostream>
using namespace std;
class C {
public:
C(int a = 1, int b = 2) : a_{a}, b_{b}, n{0,1,2,3,4} {};
int n[5];
int a_,b_;
};
int main()
{
C c = C{}; // should call C(int a = 1, int b = 2) with default arg.
cout << c.a_ << " " << c.b_ << endl;
return 0;
}
Однако, я получаю неожиданный результат 0 0
. Другими словами, все инициализируется нулем. Единственный способ, которым это могло случиться: 1. Был вызван неявный конструктор по умолчанию или 2. Инициализация выполнена неправильно. (3. Компилятор ???)
Почему я получаю неожиданные результаты? Были ли какие-либо изменения в синтаксисе конструктора, который использует унифицированную инициализацию в C++ 11?
EDIT: Используя последнюю версию компилятора Intel:
1>------ Rebuild All started: Project: Unif_Init (Intel C++ 13.0), Configuration: Debug Win32 ------
1> Source.cpp
1> xilink: executing 'link'
1> xilink: executing 'link'
1> Unif_Init.vcxproj -> C:\Users\alex\documents\visual studio 2012\Projects\Unif_Init\Debug\Unif_Init.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Какой компилятор? Я не могу воспроизвести gcc. –
@JesseGood Компилятор Intel C++ 13 – newprint