以下代码引用自 C++11 标准 N3485 第 6.8.3 节关于歧义解决的内容:
struct T1 {
T1 operator()(int x)
{
return T1(x);
}
int operator=(int x)
{
return x;
}
T1(int) { }
};
struct T2
{
T2(int){ }
};
int a, (*(*b)(T2))(int), c, d;
void f() {
// disambiguation requires this to be parsed as a declaration:
T1(a) = 3,
T2(4), // T2 will be declared as
(*(*b)(T2(c)))(int(d)); // a variable of type T1
// but this will not allow
// the last part of the
// declaration to parse
// properly since it depends
// on T2 being a type-name
}
我不知道如何解析这段代码:
T1(a) = 3,
T2(4),
(*(*b)(T2(c)))(int(d));
在这种情况下是什么意思?你能给我解释一下吗?这个示例代码对我来说似乎相当模糊。
非常感谢。