that is silly. They should have kept std::count for use with the lambda. "count_if" doesn't make _sense_ . What, do I count only if the predicate returns true, otherwise I do not count? Oh well... you can always write your own ::count(iterable, predicate) ...
Awesome recap :) The groundwork paved by move semantics really can't be understated. As far as auto goes, it's hard to argue against using it for iterator functions (begin/end) and casts where the type already appears on the same line. Of course every project will be different.
Yeah. Move semantics is a big feature because it enables people to almost always return results from functions via the return type rather than through ref arguments. The problem I see is that it does not fit this video because it would need another hour of explanations 😁
piotrarturklos what? how? Move semantics don't change anything about the return type. Tuples allow multiple results, lvalue references allow returning a passed parameter. Copy elision makes it costless to return by copy. What do you mean by that? Where do move semantics help out with return types?
These are the most important features of C++, which make C++ distinct from all other programming languages. C++11 was the most significant update of the language. C++14 and C++17 are just the final completion of C++11. I guess the only notable things are structured bindings and initializations in if/switch statements in C++17. But C++20 is likely to be as a big improvement as C++11: concepts, designated initializers(~named parameters in initializers, is already a thing in C), spaceship operator , string literals as template parameters(definitely useful), ranges, consteval, coroutines and modules. I wonder how much is going to be in the final C++20. I also wondered about constexpr virtual functions, it does not make sense for me. But why not template virtual functions, I think they are only implementable with runtime compilation/JIT compiler.
cmdLP , for C++20 i was hoping they made asio part of the standard or at least added a way to handle server-side programming a bit easier. Some sort of standard GUI would be nice (They could copy from gtkmm), like tkinker for Python.
@@akj7 Even the iostreams need to be redone. I guess that this needs to be done first. All implementations of iostreams use inheritance with virtual functions. It was meant that istream and ostream are interfaces, which are subclassed by {io}fstream, {io}stringstream and whatever the class of std::cin, std::cout,... is. But it is not easy to implement an own stream class. It is not possible to use a file, created by some POSIX function within iostreams. I guess subclassing iostream is even undefined behavior.
Really well written modern C++ very rarely needs to know about move semantics and instead reduces temporaries and takes advantage of return value optimizations.
CORRECTION: In #3, lambdas. The function should call. std::count_if. As std::count takes a value as the third parameter, not a predicate.
that is silly. They should have kept std::count for use with the lambda. "count_if" doesn't make _sense_ . What, do I count only if the predicate returns true, otherwise I do not count? Oh well... you can always write your own ::count(iterable, predicate) ...
Thank you for your hard work on giving us, laymen, an opportunity to learn C++
Your videos are an excellent companion to any course on c++.
Awesome recap :) The groundwork paved by move semantics really can't be understated.
As far as auto goes, it's hard to argue against using it for iterator functions (begin/end) and casts where the type already appears on the same line. Of course every project will be different.
Or when your type would be too verbose.
Just integrated your chai script engine in my 2 qt applications, wow great job men, I couldn't be more happier
Five times thirteen is fifteen? Is that one of those floating point errors?
Like such overview over standards. Thank you!
your new mic sounds good!
But Jason, where is move semantics?! 🤔
Yeah. Move semantics is a big feature because it enables people to almost always return results from functions via the return type rather than through ref arguments. The problem I see is that it does not fit this video because it would need another hour of explanations 😁
piotrarturklos what? how? Move semantics don't change anything about the return type. Tuples allow multiple results, lvalue references allow returning a passed parameter. Copy elision makes it costless to return by copy. What do you mean by that? Where do move semantics help out with return types?
Excellent summary of the important additions to '11, dude!
I think you should almost ALWAYS use auto where it's applicable. It's impossible to change types in code otherwise
What does the narrator mean by "slicing" at 5:08?
Memetic Title: Important Parts of C++11 in a Nutshell
Those features effectively transformed c++ into ++c.
That is so good. Truly a linguistic hack.
These are the most important features of C++, which make C++ distinct from all other programming languages. C++11 was the most significant update of the language. C++14 and C++17 are just the final completion of C++11. I guess the only notable things are structured bindings and initializations in if/switch statements in C++17.
But C++20 is likely to be as a big improvement as C++11: concepts, designated initializers(~named parameters in initializers, is already a thing in C), spaceship operator , string literals as template parameters(definitely useful), ranges, consteval, coroutines and modules. I wonder how much is going to be in the final C++20. I also wondered about constexpr virtual functions, it does not make sense for me. But why not template virtual functions, I think they are only implementable with runtime compilation/JIT compiler.
cmdLP , for C++20 i was hoping they made asio part of the standard or at least added a way to handle server-side programming a bit easier. Some sort of standard GUI would be nice (They could copy from gtkmm), like tkinker for Python.
@@akj7 Even the iostreams need to be redone. I guess that this needs to be done first. All implementations of iostreams use inheritance with virtual functions. It was meant that istream and ostream are interfaces, which are subclassed by {io}fstream, {io}stringstream and whatever the class of std::cin, std::cout,... is. But it is not easy to implement an own stream class. It is not possible to use a file, created by some POSIX function within iostreams. I guess subclassing iostream is even undefined behavior.
I feel like move semantics deserves more than a passing mention when reviewing C++11.
Really well written modern C++ very rarely needs to know about move semantics and instead reduces temporaries and takes advantage of return value optimizations.
Please use dark theme in your editor, my eyes are burning especially in late nights. Any how thank you for your videos.
I suppose count_if with lambda..
Why do u call new instead of make_unique?
make_unique is C++14
@@TheMistafunk oooh
Lambda is Greek for "Lazy"
The microphone is not good. Sounds like you are talking through a comb (yes a comb).
that only makes it better
Thank you #cpp #cplusplus
auto is dangerous IMO, it makes C++ more like python or some girly-man language
@Lorem Ipsum lol yeah but I am still right. auto is for jokers
dude i lol'd. unfortunately for me i'm getting paid to use some girly man tech right now
@@steveneumeyer681 yeah and you are getting paid BIG but no one is making use auto. You don't need to use it
ever tried groovy ?