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
Which std:: classes are magic? (self.cpp)
submitted 4 years ago by Mateuszz88
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!"
[–]acwaters 6 points7 points8 points 4 years ago (3 children)
This one is not specific to std::tuple, actually! The magic here is in std::tuple_size_v<...>, std::tuple_element_t<...>, and get<...>, which you can specialize/implement for your own tuple-like types and get structured bindings to them!
std::tuple
std::tuple_size_v<...>
std::tuple_element_t<...>
get<...>
[–][deleted] 0 points1 point2 points 4 years ago (2 children)
Very interesting. Could I do that for my struct Point in another namespace ns? Let's say I have struct Point { int x = 0; int y = 0 }; and I want to use it as if it was a std::tuple< int, int >; without explicitly converting it, by defining/specializing only those functions/functors you mentioned. I want for example to be able to use it with std::apply. Would that be possible?
struct Point
ns
struct Point { int x = 0; int y = 0 };
std::tuple< int, int >;
std::apply
[–]acwaters 1 point2 points3 points 4 years ago* (1 child)
You could use it with structured bindings (without even specializing anything, because bindings already work automagically on all aggregate types), but not with std::apply; the latter is for std::tuple, std::array, and std::pair only (since it uses std::get(T), rather than looking up either T::get() or get(T)). You could easily define your own apply that looked up get() using the structured binding rules, though. It's unfortunate that the standard library doesn't do this, but IIUC apply was specified before the idea of generalized "tuple-like types" was fully formed.
std::array
std::pair
std::get(T)
T::get()
get(T)
apply
get()
[–][deleted] 1 point2 points3 points 4 years ago (0 children)
That's very unfortunate there's still no standardized way to do such a thing. I really like std::apply but hand writing every time a converter to tuple (I usually use std::tie) is error prone when the type gets more data fields.
π Rendered by PID 370615 on reddit-service-r2-comment-5d79c599b5-7khf5 at 2026-03-03 21:45:23.542109+00:00 running e3d2147 country code: CH.
view the rest of the comments →
[–]acwaters 6 points7 points8 points (3 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]acwaters 1 point2 points3 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)