C ++ 11에는 클래스 초기화를위한 새로운 구문이있어 변수를 초기화하는 방법에 대한 많은 가능성을 제공합니다.
{ // Example 1
int b(1);
int a{1};
int c = 1;
int d = {1};
}
{ // Example 2
std::complex<double> b(3,4);
std::complex<double> a{3,4};
std::complex<double> c = {3,4};
auto d = std::complex<double>(3,4);
auto e = std::complex<double>{3,4};
}
{ // Example 3
std::string a(3,'x');
std::string b{3,'x'}; // oops
}
{ // Example 4
std::function<int(int,int)> a(std::plus<int>());
std::function<int(int,int)> b{std::plus<int>()};
}
{ // Example 5
std::unique_ptr<int> a(new int(5));
std::unique_ptr<int> b{new int(5)};
}
{ // Example 6
std::locale::global(std::locale("")); // copied from 22.4.8.3
std::locale::global(std::locale{""});
}
{ // Example 7
std::default_random_engine a {}; // Stroustrup's FAQ
std::default_random_engine b;
}
{ // Example 8
duration<long> a = 5; // Stroustrup's FAQ too
duration<long> b(5);
duration<long> c {5};
}
선언하는 각 변수에 대해 어떤 초기화 구문을 사용해야하는지 생각해야하는데 이로 인해 코딩 속도가 느려집니다. 나는 그것이 중괄호를 도입하려는 의도가 아니라고 확신합니다.
템플릿 코드와 관련하여 구문을 변경하면 다른 의미로 이어질 수 있으므로 올바른 방법으로가는 것이 필수적입니다.
어떤 구문을 선택해야하는지 보편적 인 지침이 있는지 궁금합니다.