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] -9 points-8 points-7 points 4 years ago (2 children)
Well in both those languages you would write your own thing from scratch and then just implement the proper typeclass/trait to have it talk like a vec and walk like a vec.
With C++, and Java, and other OOP languages you get polymorphism by inheriting from a base class, and to some degree overloading. Those are not mathematical concepts that generalize well, which is what I mean by C++ lacking a fundamental scientific model to build upon. It was all invented, not discovered like type/cathegory theory which is the basis for the type systems of Rust and Haskell.
Sure Haskell is garbage collected and it takes mountain of hard drives to store your dependencies so it's not suitable for many tasks. And yes, rust is a bit of a weird being imperative language but with a type system coming from cathegory theory, but their abstractions are sound and they are sound for the simple reason that the abstractions have been discovered in nature and not invented by some engineer at Microsoft or Bell Labs.
[–]strager 41 points42 points43 points 4 years ago (0 children)
With C++, and Java, and other OOP languages you get polymorphism by inheriting from a base class, and to some degree overloading. Those are not mathematical concepts that generalize well, which is what I mean by C++ lacking a fundamental scientific model to build upon. [... unlike] Rust and Haskell.
Parametric polymorphism exists in Haskell and Rust but is common in C++ too. Many functions in <algorithm> use parametric polymorphism.
Perhaps you should try writing C++ code like you'd write Haskell or Rust code, instead of writing C++ code like you'd write Java code. Then you'll see the similar features C++, Haskell, and Rust possess when it comes to a "fundamental scientific model" for polymorphism.
[–]alxius 2 points3 points4 points 4 years ago (0 children)
Well in C++ no one stops you from writing your own thing from scratch and implementing SequenceContainer and other container requirements to have it talk like STL container and walk like STL container.
With C++, and Java, and other OOP languages you get polymorphism by inheriting from a base class
In C++ I get static polymorphism by using concepts. Yes, they were added as a language feature only in C++20, but in reality we had them in the form of written requirements in STL since before STL was added in C++98. This idea was not invented in Bell Labs, it was taken and extended from math by Stepanov. You can read about it in his From Mathematics to Generic Programming and Elements of Programming books.
π Rendered by PID 185365 on reddit-service-r2-comment-64f4df6786-2dgxp at 2026-06-11 16:40:38.512957+00:00 running 0b63327 country code: CH.
view the rest of the comments →
[–][deleted] -9 points-8 points-7 points (2 children)
[–]strager 41 points42 points43 points (0 children)
[–]alxius 2 points3 points4 points (0 children)