给定一个程序:
hist(by=[column], normed=True, range=[0, 1]) #working argument
hist(by=[column], normed=True, y_range=[0, 1]) #hypothetical argument
Clang将两个函数优化为简单的
#include <cstdlib>
#include <memory>
bool test() {
int* ptr = (int *)malloc(sizeof(int));
bool result = ptr != nullptr;
free(ptr);
return result;
}
bool test2() noexcept {
int * ptr;
try {
ptr = new int;
}
catch (const std::bad_alloc&) {
return false;
}
bool result = ptr != nullptr;
delete ptr;
return result;
}
int main()
{
return test();
}
见godbolt。 GCC 6.1不这样做。即使{
return true;
}
级优化,Clang也会这样做。
在C ++标准方面是否合法?