I've only just started watching this but I already like the approach. Considering design choices from a sort of meta level is so important. So many C++ talks are centered on C++ features that it is easy to lose sight of one's programming goals. Obviously it is important to learn about the latest advances in the language but that's probably nowhere near as important as getting design right.
Requiring concepts to be satisfied instead of a random bag of properties allow authors to not expose implementation details that could break code if changed. So while std::ranges::advance does not use the post increment in the current implementation, the authors are free to change that as long as they still adhere to the concept.
12:17 Great example of why comments are bad. That doesn't "get" anything. It is an indexer, if you want terminology. It indexes into the object and gives a reference to an element which is an lvalue. It can be read or assigned/modified to read or update the array.
Instead of "checked generics", not sure what that means, I keep going back to Type Classes in my mind. Basically, type erased views or interfaces that only exist at compile time, ie at the language level. If the "view" doesn't support an operation used in an algorithm, it won't compile. For example, a Functor type class/view and fmap. The question then becomes a matter of compiling it down efficiently so that the "view" just forwards in the T when the algorithm is instantiated. Ie, it's transparent. I'm just spitballing, I hope that makes sense. Edit: Basically a language level construct Type Class that declares the required interface, that is used like a concept, except when writing a template the compiler can easily type check that no operations are used on the type not declared in the type class within the algorithm, no stealthy requirements. Then, when instantiating the template, a type T is checked that it supports the interface of the type class, similar to concept checking, and if passed, the template is instantiated. If not you get a compiler error similar to those with concepts. No typed erased view needs generated by compiler. A kind of combination of traditional templates with concepts, and abstract base classes just with no actual inheritance.
The presenter so far (13 minutes in) is showing all his arguments supported by TypeScript. Hasn’t to my taste explained why not in C++, and I only have a hope that further down the video we will discuss C++. Oh it does switch to C++ and does become a lot more interesting. Still here 😊
I've only just started watching this but I already like the approach. Considering design choices from a sort of meta level is so important. So many C++ talks are centered on C++ features that it is easy to lose sight of one's programming goals. Obviously it is important to learn about the latest advances in the language but that's probably nowhere near as important as getting design right.
Requiring concepts to be satisfied instead of a random bag of properties allow authors to not expose implementation details that could break code if changed. So while std::ranges::advance does not use the post increment in the current implementation, the authors are free to change that as long as they still adhere to the concept.
30:35 the gasp "what does copy mean" "* gasp*" from the audience caught me soo off guard and I lost it haha.
Great video, thanks!
Excellent talk thanks
This talk is very good.
Great speaker! I like his energy.
12:17 Great example of why comments are bad. That doesn't "get" anything. It is an indexer, if you want terminology. It indexes into the object and gives a reference to an element which is an lvalue. It can be read or assigned/modified to read or update the array.
Excited for this one
1:07:24 maybe a bad example since JPEG XL has been of recent interest as people are still trying to get Chromium to support it...
Instead of "checked generics", not sure what that means, I keep going back to Type Classes in my mind. Basically, type erased views or interfaces that only exist at compile time, ie at the language level. If the "view" doesn't support an operation used in an algorithm, it won't compile. For example, a Functor type class/view and fmap. The question then becomes a matter of compiling it down efficiently so that the "view" just forwards in the T when the algorithm is instantiated. Ie, it's transparent. I'm just spitballing, I hope that makes sense.
Edit: Basically a language level construct Type Class that declares the required interface, that is used like a concept, except when writing a template the compiler can easily type check that no operations are used on the type not declared in the type class within the algorithm, no stealthy requirements. Then, when instantiating the template, a type T is checked that it supports the interface of the type class, similar to concept checking, and if passed, the template is instantiated. If not you get a compiler error similar to those with concepts. No typed erased view needs generated by compiler. A kind of combination of traditional templates with concepts, and abstract base classes just with no actual inheritance.
56:56 Alexander Stepanov’s talk: th-cam.com/video/YlVUzJwN_Xc/w-d-xo.html
does anyone know the talk referenced @ 27:41 ?
th-cam.com/video/sc1guyo5Rso/w-d-xo.htmlfeature=shared
look for Value Oriented Programming Part V - Return of the Values - Tony Van Eerd - C++Now 2024
The presenter so far (13 minutes in) is showing all his arguments supported by TypeScript. Hasn’t to my taste explained why not in C++, and I only have a hope that further down the video we will discuss C++. Oh it does switch to C++ and does become a lot more interesting. Still here 😊
Yet another language at a "CppCon". WT actual F? What happened to this community?