https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68869
--- Comment #3 from TC <rs2740 at gmail dot com> --- This was http://cplusplus.github.io/LWG/lwg-defects.html#2005. I don't think the S example breaks any rule in the pre-LWG2005 version, either. That version requires that "P shall be convertible to value type", and static_assert(std::is_convertible<S, std::pair<const int, int>>::value, "!!"); doesn't fire.