【发布时间】:2013-08-13 21:03:14
【问题描述】:
这是一个关于decltype的小问题...
我有这样的事情:
using namespace std;
template< typename BIt >
void dostuff(BIt first, BIt middle, BIt last)
{
auto temp = *first;
for_each(first, middle, [](decltype((temp)) el)
{cout << el << " "; });
}
int main()
{
std::vector<int> vi{11,22,33,44,1,2,3,4,5};
dostuff(std::begin(vi), std::begin(vi) + 4, std::end(vi));
}
我如何避免使用 temp 变量(如果取消引用空向量的.beginan 是合法的,除了是丑陋的 IDK :))?
【问题讨论】:
-
decltype(*first)有什么问题? -
@KerrekSB 没什么...我需要睡觉了 :)
-
顺便说一句,在堆栈跟踪我的思维过程之后......我想起了我想知道的......如果我可以从类型而不是实例中获取迭代器类型的底层类型......现在我明白了愚蠢,因为 decltype 对表达式起作用。 :)
标签: c++ c++11 templates iterator decltype