Этот вопрос содержит этот фрагмент кода:
A::A(const char *pc) {
A(string(pc));
}
A::A(string s) {
vector<string> tmpVector;
tmpVector.push_back(s);
A(tmpVector); // <-- error
}
// Constructor
A::A(vector<string> filePathVector) {
}
Проблема заключается в том, что A(tmpVector);
конфликтует с vector<string> tmpVector;
:
error: conflicting declaration 'A tmpVector'
error: 'tmpVector' has a previous declaration as 'std::vector<std::basic_string<char> > tmpVector'
Ответ говорит:
Это
А (tmpVector);
совпадает с этим
A tmpVector;//но уже есть объект с именем tmpVector
С добавленным комментарием:
В этом контексте() являются излишними.
Мой вопрос: почему скобки излишни? Что именно в спецификации С++ 11 делает так? Я этого раньше не видел.