这是我想出的情况:
#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 {}以返回test {}时,它不再编译.这是为什么?在这两种情况下,它不应该是一样的吗?
坦白说,我不知道这是否有一个很好的用例,但它让我感到惊讶,所以现在我想知道发生了什么.