[Bug c++/92053] New: Compilation fails or succeeds depending on the optimization flags

antoshkka at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Oct 10 15:44:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92053

            Bug ID: 92053
           Summary: Compilation fails or succeeds depending on the
                    optimization flags
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: antoshkka at gmail dot com
  Target Milestone: ---

Consider the following code:

#include <utility>
#include <memory>
#include <variant>

struct widget;
using variant_t = std::variant<widget>;

struct my_func {
    my_func(variant_t&& arg) {
        std::make_unique<variant_t>(std::move(arg));
    }
};

struct widget {};
my_func f({});


With `-std=c++2a -O0` it compiles. With `-std=c++2a -O2` it fails on a static
assert in instantiation of 'struct std::is_default_constructible<widget>'. 

Godbolt playground: https://godbolt.org/z/-d26aG


More information about the Gcc-bugs mailing list