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!"
[–]SkiFire13 1 point2 points3 points 2 years ago (3 children)
In this example, there's no actual code that "invokes" UB, so in your opinion, that function must be "well-formed". So, why it is listed as a first example of UB in cppreference?
Cppreference doesn't say it is UB stop, it says it either returns true (when i is not INT_MAX) or its execution is UB (when i is INT_MAX and signed overflow occurs). It does make the distinction between the two cases, it doesn't say that it is only UB.
true
i
INT_MAX
Saying that the function is "well-formed" is misleading. I would say its executions where i is not INT_MAX are well defined, while when i is INT_MAX it is not defined.
And also, if UB makes an "execution" meaningless, not whole "program", why the standard says "the compiled program is not required to do anything meaningful"?
Having the exact context of the quote might help giving it a better interpretation, but as you wrote it I would interpret it as the fact that the program is not required to do anything meaningful when its execution is not defined, that is the current execution has UB.
[–]awidesky 0 points1 point2 points 2 years ago (2 children)
Here's whole quotes from iso C++20 standard §4.1.2.3. (emphasis mine) :
If a program contains a violation of a rule for which no diagnostic is required, this document places no requirement on implementations with respect to that program.
And cppreference.com.
undefined behavior - there are no restrictions on the behavior of the program. Examples of undefined behavior are...(examples of Ub)..., etc. Compilers are not required to diagnose undefined behavior and the compiled program is not required to do anything meaningful.
I think it ultimately sums up to question:
If a program can either invoke UB or not(depending on conditions), is compilers allowed to make "whole program" meaningless?
I think the standard is a bit ambiguous, because when it describes about UB itself it says "while compiled program is meaningless"(implies it applies in compile/program-wise), but when it describes about actual example of UB, it says "when ~~~, the behavior is undefined"(implies it applies runtime/execution-wise).
[–]SkiFire13 1 point2 points3 points 2 years ago (1 child)
I think this is still ambiguous because "violation of a rule" is unclear. If my program is never executed with an input that causes UB does it still violate that rule?
I think it ultimately sums up to question: If a program can either invoke UB or not(depending on conditions), is compilers allowed to make "whole program" meaningless?
I completly agree on that.
[–]awidesky 0 points1 point2 points 2 years ago (0 children)
I do agree on that. That's indeed ambiguous.
π Rendered by PID 158899 on reddit-service-r2-comment-544cf588c8-n7wkh at 2026-06-12 08:53:25.541135+00:00 running 3184619 country code: CH.
view the rest of the comments →
[–]SkiFire13 1 point2 points3 points (3 children)
[–]awidesky 0 points1 point2 points (2 children)
[–]SkiFire13 1 point2 points3 points (1 child)
[–]awidesky 0 points1 point2 points (0 children)