是std :: declval <bool&>()= std :: declval <std :: nullptr_t>()格式正确吗?

时间:2019-01-22 02:47:21

标签: c++ language-lawyer libstdc++ well-formed

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

相反,clang can pass this case

std::declval<bool&>() = std::declval<std::nullptr_t>()格式正确,是iow,clang还是gcc,谁反对这里的标准?

0 个答案:

没有答案