#include struct SomeStruct { float f; }; SomeStruct* createSomeStruct() { return new SomeStruct; } int main(int argc, char** argv) { const std::auto_ptr< int > blah = createSomeStruct(); // why doesn't this line fail to compile? }