Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Need a better explanation of the difference from ranges-v3 #66

Open
eyalroz opened this issue Aug 31, 2019 · 4 comments
Open

Need a better explanation of the difference from ranges-v3 #66

eyalroz opened this issue Aug 31, 2019 · 4 comments

Comments

@eyalroz
Copy link

eyalroz commented Aug 31, 2019

The repository's README says it is intended for people who "don't want to (or can't) use the full-blown Range-V3". This is a vague statement. difficult to understand. I mean, other than the fact that Nano is missing some Ranges-V3 features - what's the difference? Why would someone want to use the same functionality from Nano rather than from Ranges-V3? The explanation should be more detailed and explicit.

@tcbrindle
Copy link
Owner

Thanks for the message. To be honest, the whole readme is now somewhat out of date and could do with a refresh.

With regard to Range-V3 specifically, when NanoRange began there were more differences -- Range-V3 could not be used with MSVC, NanoRange adhered somewhat more closely to the standard proposals, and Range-V3's concepts emulation was C++11-compatible and so a little slower in terms of compile times than the C++14 approach NanoRange used. Since then, Eric has updated Range-V3 considerably so that it's now very close to the final ranges spec, it can now optionally use real language concepts if available (and uses a scheme quite similar to NanoRange's when they are not), and Microsoft have updated their compiler so it can now handle all the template metaprogramming required.

All in all, to be honest there is probably little to choose between them today if you're sticking to the subset of Range-V3 that has been proposed for standardisation -- hence the current vague statement in the README.

@eyalroz
Copy link
Author

eyalroz commented Sep 2, 2019

Well, I hope you find the time to update the README more generally, then...

@tcbrindle
Copy link
Owner

Yep, it's on the TODO list :). I'll leave this bug report open as a reminder too.

@eigenwhat
Copy link

As a general remark, it's also lighter than range-v3 (as in, less dependencies/features/views/backwards compatibility kludges, which helps readability of the code as a consumer of it) and if you need to support MSVC prior to VS 2019, you're basically left looking here. That's what brought me here at least. Well, that and the cppcon talk. ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants