【发布时间】:2016-10-18 12:52:35
【问题描述】:
根据std::weak_ptr 文档,可以构造一个constexpr weak_ptr:
#include <memory>
constexpr weak_ptr<int> foo{};
但是,尝试使用 clang 会产生编译错误,抱怨 constexpr 变量不能具有非文字类型“const std::weak_ptr<int>”,这是因为 weak_ptr<int> 具有用户提供的析构函数。 (确实如此,查看 libc++ 头文件)
我的问题是,这是一个 libc++ 错误,还是 constexpr weak_ptr 没有意义,并且使用 constexpr 默认构造函数是一个错误?我可以期望这在未来会起作用吗?
【问题讨论】:
标签: c++ c++11 destructor constexpr weak-ptr