C++11 'nullptr_t' 返回函数被省略
C++11 `nullptr_t` returning function being elided?
以下 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 {}; }
这是 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 完整修复程序。
相关文章:
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- CURLOPT_INTERLEAVEFUNCTION回调函数始终接收 nullptr 作为用户数据指针
- 函数 AfxEndThread 中的读取访问冲突"pThread-> was nullptr"
- 为什么分配了 nullptr 的指针可以调用成员函数?
- c++:成员函数中的"this == nullptr"安全吗?
- 为什么使用 nullPtr 调用函数不会使我的应用程序崩溃
- 返回其参数或检查 nullptr 的函数
- 我可以解决unique_ptr在<MyType>仅存储 nullptr 时不需要 MyType 析构函数定义吗?
- std::unique_ptr 是否在其析构函数中将其基础指针设置为 nullptr?
- 默认模板函数参数中的 boost::shared_ptr 和 nullptr
- 当调用析构函数时,是否可以将指向类实例的指针设置为nullptr
- 为什么函数模板不理解 NULL,但适用于 nullptr
- 具有显式定义的默认构造函数的 unique_ptr 到 nullptr 错误的类内成员初始值设定项
- std::将成员函数绑定到 nullptr 处的实例,导致看似随机的 this 指针
- C++ 通过多个函数传递 nullPTR
- 将 nullptr 分配给函数指针变量是否安全
- 检查std::函数是否已分配给nullptr
- Qt/GCC:按值从函数返回对象/nullptr.为什么要编译此代码