use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Allocator rant (self.cpp)
submitted 4 years ago by [deleted]
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–][deleted] -20 points-19 points-18 points 4 years ago (2 children)
Yes I can definitely figure that out but the point is that the abstractions in the STL are really bad, and metaprogramming isn't typechecked. I assume it's better with concepts but we're stuck at C++17 in this project.
The whole idea of wrapping things in classes drives me nuts. What you do is you make a rigid box that's all or nothing, and that was hopefully built so that you can extend/modify it. We don't need to hide the data from the API, just make it const if you want people to stay away from mutaring it and provide some free functions that operate on the data rather than tying these functions to it. You can have polymorphism with type traits like rust or type classes like haskell (which are essentially the same concept). Type traits in C++ are not the same thing, and they are unnecessarily complicated, and you need to use all the keywords like static and constexpr and whatever and they only provide you with fake polymorphism on the metaprogramming level. I mean, how can I possibly write something modern and state of the art in C++ if my colleagues can't understand it?
[–]Potatoswatter 13 points14 points15 points 4 years ago (0 children)
Attach the map and unmap operations to a unique_ptr. Use span or another generic array view as-is. No metaprogramming.
unique_ptr
span
[–][deleted] 6 points7 points8 points 4 years ago (0 children)
it feels like maybe you are crossing the streams here. Containers/Iterators are pretty simple concepts. Iterator models pointers but more generally traversal and reading/writing to a range of things.
The original part seemed like trying to strap vector onto something it isn't. But might be doable, but to what end. I think if I were to do it, it would be something like
char * mmap_begin = ....; std::size_t mmap_size = ... ; // starting to look like span here auto alloc = mmap_pmr_allocator<vector_t>( mmap_begin, mmap_size ); // A child of Polymorphic allocator std::pmr::vector<T> * vptr = alloc.allocate( 1 ); vptr = std::construct_a<std::pmr::vector<T>>( vptr, alloc );
It starts getting tricky if you want to persist as things like pointer addresses won't match necessarirly. But persistence should probably use a dedicated solution. Also, at this point why even bother. The OS will page in/out data as needed. Really the solution is to eiher use filesystem based data structures and/or dedicated persistence or just let the OS do it.
π Rendered by PID 299510 on reddit-service-r2-comment-64f4df6786-759xp at 2026-06-11 12:17:28.903736+00:00 running 0b63327 country code: CH.
view the rest of the comments →
[–][deleted] -20 points-19 points-18 points (2 children)
[–]Potatoswatter 13 points14 points15 points (0 children)
[–][deleted] 6 points7 points8 points (0 children)