这是一个 libstdcxx static_assert:
static_assert(!std::is_assignable<bool&, std::nullptr_t>::value, "Error");
从cppreference: is_assignable :
如果表达式
std::declval<T>() = std::declval<U>()
在未计算的上下文中格式正确,则提供等于 true 的成员常量值。否则,值为假。访问检查就像来自与任一类型无关的上下文一样执行。
所以,libstdcxx 认为它是不可赋值的,当然gcc 不能通过这种情况
是std::declval<bool&>() = std::declval<std::nullptr_t>()
格式良好的,iow,clang还是gcc,谁反对这里的标准?