here是libstdcxx static_assert:
static_assert(!std::is_assignable<bool&, std::nullptr_t>::value, "Error");
来自cppreference: is_assignable:
如果表达式
std::declval<T>() = std::declval<U>()
在未评估的上下文中格式正确,请提供等于true的成员常量值。否则,值为false。就像从与这两种类型都不相关的上下文中一样执行访问检查。
因此,libstdcxx认为它是不可分配的,当然gcc cannot pass this case
std::declval<bool&>() = std::declval<std::nullptr_t>()
格式正确,是iow,clang还是gcc,谁反对这里的标准?