为什么clang
它执行正确,但gcc
使该程序崩溃?神栓
struct A {
A();
~A();
};
static A a;
int main() {
}
#include <iostream>
A::A() {
std::cout << "A::A()\n";
}
A::~A() {
std::cout << "A::~A()\n";
}
我想做一个案例,它将为某个数字 n 给出一个结果 (42),为 n + 1 给出另一个结果 (43),为其他所有结果给出第三个结果 (44)。我正在尝试这样做:
f x = let n = 4 in case x of {n -> 42; n+1 -> 43; _ -> 44}
不起作用。我认为是因为您不能在模式中使用表达式 (n+1)。我正在尝试通过警卫:
f x = let n=4 in case x of {n -> 42; _ | x == n+1 -> 43 | True -> 44}
也不行。写一个额外的模式。如何使最短的权利?