问一个语法问题
代码如下:
template <typename T>
class foo
{
public:
class bar
{
public:
bar() {}
bar(const bar &) {}
bar(int) {}
operator T *() const
{
return 0;
}
bar operator + (int)
{
return *this;
}
};
};
int main()
{
foo<int>::bar f;
size_t i = 1;
f + i;
return 0;
}
注意:外层 class foo 和 template 都不能去掉。
这个代码应该通过编译么?还是应该报operator +匹配歧义?