你能猜出这个简单程序的输出吗?
#include <vector>
#include <string>
#include <exception>
#include <iostream>
using namespace std;
int main()
{
try {
struct X {
explicit X(int) {}
X(string) {} // Just to confuse you more...
};
vector<X>{"a", "b"};
} catch (exception& x) {
cerr << x.what();
}
}
好吧,我不能,这花了我一天的时间“研究”,然后才登陆这里,最终从一些复杂的现实生活代码中提取出来(到处都是类型别名,匿名。与非 POD 成员的联合以及手工 -精心策划的演员/导演等,只是为了营造氛围)。
而且……我还是看不出发生了什么!有人可以给一个温柔的提示吗?(希望只是一个盲点。我不再专业地从事 C++ 工作。)
注意:使用(最新的)MSVC/W4
和 GCC进行干净编译* -Wall
;两者的输出相同(语义上)。
* 即使没有“迷惑读者”这句话。我想我会做噩梦。
(请耐心等待,我尽量不把所有内容都拼写得更详细,以免剧透——毕竟,这确实是不言自明的,对吧?除了,对我来说恰恰相反……)