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

            Bug ID: 100992
           Summary: Wrong result for is_constructible for const ref of
                    tuple of tuples
           Product: gcc
           Version: 11.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kirshamir at gmail dot com
                CC: kirshamir at gmail dot com
  Target Milestone: ---

The second static_assert below fails, should pass:

#include <tuple>

struct F {
    F() { }
    F(const std::tuple<F>& foo) {}
};

static_assert(std::is_constructible_v<F, const std::tuple<F>&>);
static_assert(std::is_constructible_v<F, const std::tuple<std::tuple<F>>&>); //
fails, unjustifiably

int main() {
    F f1{std::tuple{F{}}};
    auto tup = std::tuple{std::tuple{f1}};
    F f2{tup}; // constructible
}

https://godbolt.org/z/3KfbxfhWE

Reply via email to