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