使用rangev3库我可以这样做:
auto march = view::iota(1,32)
| view::transform(
[](int i){return date(1995, greg::Mar, i);
});
给我1995年游行的日期:
1995-Mar-01
...
1995-Mar-31
有没有办法用更接近蟒蛇的语法来做到这一点:
[date(1995, Mar, i) for i in range(32)]
特别是我觉得从日期/功能开始有助于代码的可读性。
答案 0 :(得分:0)
你最接近的是使用variadics:
namespace detail {
template <std::size_t ...Is>
std::vector<date> generate(std::index_sequence<Is...>) {
return {date(1995, greg::Mar, Is + 1)...}; // almost like Python
}
}
std::vector<date> generate() {
return detail::generate(std::make_index_sequence<32>());
}
但是现在你没有使用范围,你必须定义两个单独的函数。