考虑以下语句:
std::deque<int> intDeque(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
我们的原意是想构造一个int型的deque,并用标准输入流中的int数据初始化它。
但是如果我们就这样写的话,我们会得到一大堆莫名奇妙的错误,因为这种情况下,该语句会被认为是一个函数声明。
为了消除这种歧义,我们应该这样书写:
std::deque<int> intDeque((std::istream_iterator<int>(std::cin)),(std::istream_iterator<int>()));
加上2对括号即可消除这种歧义。
发表于 @ 2007年04月18日 12:49:00|评论(loading...)|编辑