【发布时间】:2011-08-21 00:45:33
【问题描述】:
我从here获得了代码。
class Timer {
public:
Timer();
};
class TimeKeeper {
public:
TimeKeeper(const Timer& t);
int get_time()
{
return 1;
}
};
int main() {
TimeKeeper time_keeper(Timer());
return time_keeper.get_time();
}
从它的外观来看,它应该由于以下行而出现编译错误:
TimeKeeper time_keeper(Timer());
但只有在存在return time_keeper.get_time(); 时才会发生。
为什么这条线很重要,编译器会发现 time_keeper(Timer() ) 构造的歧义。
【问题讨论】:
标签: c++ most-vexing-parse