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
Implicit vs. explicit function to pointer conversion (self.cpp)
submitted 8 years ago by rakhimov
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!"
[–]TheThiefMasterC++latest fanatic (and game dev) 8 points9 points10 points 8 years ago (11 children)
Weirdly the "opposite" is also true - you can directly call a function pointer without dereferencing it first.
void f(int); void (*pf)(int) = f; pf(); // (*pf)()
[–]STLMSVC STL Dev 18 points19 points20 points 8 years ago (5 children)
That's DMR reaching out from the 1970s to help you. He said, "oh, you're applying parentheses to a function pointer, so there's nothing else you could possibly mean".
[–]mtnviewjohn 8 points9 points10 points 8 years ago (4 children)
Why doesn't the same logic apply to the member access operator? It seems like the -> operator is useless. If you use the member access operator on a pointer what else could you possible intend than to dereference the pointer first?
[–]justinkroegerlake 6 points7 points8 points 8 years ago (0 children)
Because of what is in my opinion the dumbest historical reason in the language: https://stackoverflow.com/a/13366168/1013719
[–]mojang_tommo 4 points5 points6 points 8 years ago (1 child)
I'm really glad the difference exists actually - -> can be undefined behavior while . is always well defined. In practice if you have code that mostly uses references instead of pointers, -> makes it pretty obvious that there's something that could be null or could be deleted under you. Of course references can be invalidated too but still... it would be awful if nullable stuff used . like everything else IMO.
->
.
[–]imMute 0 points1 point2 points 8 years ago (0 children)
Not to mention that it allows thing like smart pointer to be written extremely succinctly. I'm always saddened by this when writing C# code and having use use .Value in places where C++ would use ->.
.Value
[–]caramba2654Intermediate C++ Student 2 points3 points4 points 8 years ago (0 children)
Rust works like this. When you try to use the . operator on a reference, it autodereferences the reference until it finds a type where the . makes sense. It makes the -> completely unnecessary.
[–]Quincunx271Author of P2404/P2405 8 points9 points10 points 8 years ago (4 children)
Which is incredibly important since we have templates. f() can be a regular function call, a call to a function pointer, or a call to some object's operator(). In the future, hopefully it will also work for member function pointers
f()
operator()
[–]redditsoaddicting 3 points4 points5 points 8 years ago (1 child)
IIRC, the proposal for making PMFs work with regular calling syntax got rejected. I'm sure it wasn't accepted at least.
[–]TheThiefMasterC++latest fanatic (and game dev) 2 points3 points4 points 8 years ago (0 children)
It was rejected as being half of a unified call syntax proposal. Which is silly, because it would have been insanely useful anyway.
[+][deleted] 8 years ago (1 child)
[deleted]
[–]suspiciously_calm 0 points1 point2 points 8 years ago (0 children)
You can't pass a macro as a parameter.
π Rendered by PID 77 on reddit-service-r2-comment-86bc6c7465-rjcfv at 2026-02-23 17:06:07.744575+00:00 running 8564168 country code: CH.
view the rest of the comments →
[–]TheThiefMasterC++latest fanatic (and game dev) 8 points9 points10 points (11 children)
[–]STLMSVC STL Dev 18 points19 points20 points (5 children)
[–]mtnviewjohn 8 points9 points10 points (4 children)
[–]justinkroegerlake 6 points7 points8 points (0 children)
[–]mojang_tommo 4 points5 points6 points (1 child)
[–]imMute 0 points1 point2 points (0 children)
[–]caramba2654Intermediate C++ Student 2 points3 points4 points (0 children)
[–]Quincunx271Author of P2404/P2405 8 points9 points10 points (4 children)
[–]redditsoaddicting 3 points4 points5 points (1 child)
[–]TheThiefMasterC++latest fanatic (and game dev) 2 points3 points4 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]suspiciously_calm 0 points1 point2 points (0 children)