Столкнулся вот с таким примером:
#include <list>
#include <string>
std::list<std::string> g_RegEntries;
struct RegistratorClass
{
template <class T>
RegistratorClass(const T& stuff)
{
abrakadabra;
g_RegEntries.push_back("Some entry");
}
};
struct MyClass
{
MyClass()
{
// some necessary initialization
}
};
RegistratorClass reg_entry(MyClass());
using namespace std;
int main(int argc, char *argv[])
{
std::list<std::string>::iterator It = g_RegEntries.begin();
if( It == g_RegEntries.end() )
printf("Wow! Why empty?");
else
printf(It->c_str());
system("PAUSE");
return 0;
}
Что интересно код компилируется и выполняется.
Результат: "Wow! Why empty?"
Вопрос: Why empty?!