Есть ли разница при определении переменной в стеке?

Есть ли разница между:

vector<int> vec();

и

vector<int> vec = vector<int>();

Просто у меня intellisense работает только во втором случае, потому я всегда его использовал, но хочу знать имеет ли это последствия.


Ответы (2 шт):

Автор решения: user7860670

Первое объявляет функцию с именем vec с сигнатурой (void) -> vector<int> (most vexing parse), второе страдает от копипасты. Правильно делать так vector<int> vec{};

→ Ссылка
Автор решения: KoVadim

В первом случае Вы объявляете функцию vec:) -это известная проблема в с++ https://en.wikipedia.org/wiki/Most_vexing_parse

можно просто писать

vector<int> vec;

работать будет хорошо и правильно.

→ Ссылка