【发布时间】:2016-11-18 15:18:59
【问题描述】:
这是打印出 buf 数组的 c++ 代码,其中填充了 0, 1, 2, ... 254
#include <iterator>
#include <iostream>
#include <numeric>
int main()
{
int buf[255];
auto it_b = std::begin(buf);
auto it_e = std::end(buf);
std::iota(it_b, it_e, 0);
std::copy(it_b, it_e, std::ostream_iterator<decltype(*it_b)>(std::cout, " "));
std::cout << std::endl;
return 0;
}
我试图让它通用,所以只有一个地方的类型是明确的int
由于我需要明确声明 ostream_iterator 的类型,我想知道实现这一目标的最佳方法是什么。
decltype(*it_b)decltype(buf[0])- 其他的...
使用这种或那种方法的优点/缺点是什么?
这次假设我们被 C 风格的数组所困。
【问题讨论】:
-
std::decay_t<declval(..)>避免引用。 -
using type = int;,并在之后使用type?