以下C ++ 11程序在gcc 4.7.2下不输出任何内容:
#include <iostream>
using namespace std;
decltype(nullptr) g()
{
cout << "foo" << endl;
return nullptr;
}
int* f()
{
return g();
}
int main(int argc, char** argv)
{
auto x = f();
}
这是正确的行为,还是编译器错误?
更新
谢谢你们。仅供参考我的解决方法:
struct NullPointer
{
template<class T> operator T*()
{
volatile decltype(nullptr) np = nullptr;
return np;
}
operator bool()
{
volatile bool b = false;
return b;
}
};
NullPointer g() { return {}; }
答案 0 :(得分:2)
这是G ++中的一个错误,它丢弃了类型为nullptr_t
对于G ++ 4.7.4和4.8.0已修复,有关初始未完成修复的信息,请参阅http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52988,有关完整修复的信息,请参阅http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54170。