прямая инициализация переменной POD не работает, но инициализация копированием работает при переносе переменной в вектор

Почему следующий код не компилируется, а два примера успешно компилируются? Я использую VS 2008 в Windows 7.


Прямая инициализация POD (не удалась):

int pod();
std::vector<int> pods;
//pods.push_back(pod); // This will generate a compiler error
// Compile error: 1>c:\test.hpp(43) : error C2664: 'std::vector<_Ty>::push_back' : cannot convert parameter 1 from 'int (__cdecl *)(void)' to 'const int &'

Копирование инициализации POD (выполнено успешно:

int pod = int();
std::vector<int> pods;
pods.push_back(pod); // No error!
0
задан Chris Morris 16 August 2012 в 20:21
поделиться