【发布时间】:2019-11-28 15:59:53
【问题描述】:
考虑这两个演示程序 (sizeof( unsigned long ) == sizeof( unsigned long long ))。
第一个是
#include <iostream>
unsigned long f( unsigned long n )
requires ( not( ( sizeof( unsigned long ) == sizeof( unsigned long long ) ) ) )
{
return n;
}
int main()
{
std::cout << f( 0 ) << '\n';
}
编译器报错
错误:无法调用函数'long unsigned int f(long unsigned int) 需要 !(sizeof (long unsigned int) == sizeof (long long unsigned int))'
但是当像这样在 requires 子句中使用 requires 表达式时
#include <iostream>
unsigned long f( unsigned long n )
requires requires { not ( sizeof( unsigned long ) == sizeof( unsigned long long ) ); }
{
return n;
}
int main()
{
std::cout << f( 0 ) << '\n';
}
程序编译并运行。
这是编译器的错误还是我遗漏了什么?
【问题讨论】: