https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115846
Bug ID: 115846
Summary: std::optional<std::unique_ptr<int>> is constant
expression even in C++20 mode
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: hewillk at gmail dot com
Target Milestone: ---
#include <memory>
#include <optional>
// static_assert([] {
// std::unique_ptr<int> p; // non-constant condition for static assertion
// return true;
// }());
static_assert([] {
std::optional<std::unique_ptr<int>> opt;
return true;
}());
GCC rejects the first but accepts the last, which seems wrong since
unique_ptr's destructor is not constexpr in C++20.
https://godbolt.org/z/38bToE8oE