这是我想出的情况:
#include <iostream>
using namespace std;
struct test {
test() { cout << "ctor" << endl; }
test(const test&) = delete;
test(test&&) = delete;
};
auto f() -> test {
return {};
// return test{};
}
auto main() -> int {
f();
}
这段代码用 clang 和 gcc 编译,但是当我改变return {}
它时return test{}
不再编译。这是为什么?它在两种情况下不应该是一样的吗?坦率地说,我不知道这是否有一个好的用例,但它让我感到惊讶,所以现在我想知道发生了什么。