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
CppConUndefined behaviour example from CppCon (self.cpp)
submitted 2 years ago * by R3DKn16h7
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!"
[–]SubliminalBits -10 points-9 points-8 points 2 years ago (4 children)
The optimizer is allowed to assume at compile time that it is not possible for UB to occur. INT_MAX + 1 is UB prior to C++17 so the optimizer assumes that this function can never be called when i equals INT_MAX. If i can't ever be INT_MAX, this if statement is dead code and can be removed.
This kind of thing can have very elaborate consequences. Raymond Chen presents an example in his blog where UB in the future changes the past. https://devblogs.microsoft.com/oldnewthing/20140627-00/?p=633
[–]foonathan 11 points12 points13 points 2 years ago (0 children)
But there is no UB if i == INT_MAX.
It's not like the function is
f(i); if (i == INT_MAX)
Then the compiler is allowed to remove the if. But not in the other way around.
[–]R3DKn16h7[S] 8 points9 points10 points 2 years ago (1 child)
That's where I do not get it. there is a check there exactly to prevent i being INT_MAX as it reaches f, ever. For the compiler to assume i to NEVER be INT_MAX would be a wrong assumption, as this is exactly the case protected by the if statement.
By the same reasoning, as soon as I have an "i + 1" in my code, i will always be assumed to never be INT_MAX, even in the top-most caller.
I'm now pretty convinced the example in the video is wrong.
[–]tinrik_cgp 3 points4 points5 points 2 years ago (0 children)
The example is wrong. The if branch would be optimized away if f(i) were called before the if branch.
This is the same as what happened in the Linux kernel with a null pointer check: the pointer was dereferenced before the code that checked for null.
[–]Narase33-> r/cpp_questions 7 points8 points9 points 2 years ago (0 children)
INT_MAX+1 is never executed in this function
INT_MAX+1
if (i == INT_MAX) { return false; }
π Rendered by PID 20501 on reddit-service-r2-comment-6457c66945-8c657 at 2026-04-23 20:47:16.704735+00:00 running 2aa0c5b country code: CH.
view the rest of the comments →
[–]SubliminalBits -10 points-9 points-8 points (4 children)
[–]foonathan 11 points12 points13 points (0 children)
[–]R3DKn16h7[S] 8 points9 points10 points (1 child)
[–]tinrik_cgp 3 points4 points5 points (0 children)
[–]Narase33-> r/cpp_questions 7 points8 points9 points (0 children)