3 ms·
> Modern C++ is by far the most expressive systems language. If you want to iterate over a range of integers, you need to manually explain to the computer how
by xigoi 4y ago
> Modern C++ is by far the most expressive systems language.
If you want to iterate over a range of integers, you need to manually explain to the computer how to do it. In 2023. Also, you need to Write Everything Twice because of the ancient header system.
- pjmlp 4y agoNo you don't. That is what ranges and modules are for.
- xigoi 4y agoRanges: kind of, there is the very awkwardly named std::ranges::iota_view, but it doesn't support random access and who knows if the compiler can optimize iteration over it into a simple loop. Modules are not supported by most compilers (in g++ you have to enable them as an experimental feature with -fmodules-ts, and if you want to import the standard library as modules, you need to pre-compile them into your project directory with some arcane commands).
- pjmlp 4y agoRanges: they are there, naming is a matter of taste. Modules: GCC and clang will eventually get there, I am already enjoying them on VC++
- jstimpfle 4y ago#define RANGE(type, name, last) type name = 0, last__ = (last); name != last__; name++ for (RANGE(i32, i, foo->count)) ... That solves the problem even in C. But why care much, typing a few plain loops isn't among the hard problems to solve.