CppNow
CppNow
  • Video 60
  • Views 2 373 924
Circle Metaprogramming: Better Features Make Better Libraries - Sean Baxter - CppNow 2022
Slides: github.com/boostcon
CppNow Website: www.cppnow.org​
CppNow Twitter: @CppNow​
---
Circle Metaprogramming: Better Features Make Better Libraries - Sean Baxter - CppNow 2022
Advanced language mechanisms in the Circle compiler improve the expressiveness of parameter packs, argument lists, overload resolution and control flow. Use these enhancements to write beautiful generic code: no template recursion, no deduction tricks and no lambda hacks. Member pack declarations, pack subscripts and slices, imperative arguments and deduced forwarding references stop the pain of template metaprogramming. New implementations of std::tuple, std::variant and std::mdspan demonstrate how to code from speci...
Views: 5 402

Video

Rehashing Hash Tables And Associative Containers - Eduardo Madrid - CppNow 2022
Views 1.1K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Rehashing Hash Tables And Associative Containers - Eduardo Madrid - CppNow 2022 One might think anything about mapping has been discussed twice already; however, because of the powers of Generic Programming we keep finding improvements, even substantial, both in terms of performance and modeling power. In this ...
Binary Object Serialization - Chris Ryan - CppNow 2022
Views 1.8K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Binary Object Serialization - Chris Ryan - CppNow 2022 This talk will describe a minimally intrusive technique to add serialization to a set of classes, traversing the hierarchical data, persisting in a binary format and dynamic reconstruction. When storing, it can deduce the data types using Template Argument ...
Embedded Logging Case Study: From C to Shining C++ - Luke Valenty -CppNow 2022
Views 1.8K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Embedded Logging Case Study: From C to Shining C - Luke Valenty -CppNow 2022 Logging on deeply embedded systems is critical for project success. However, the constraints of tiny CPUs and memory can force firmware engineers to settle for sub-optimal solutions. String formatting, concatenation, and easy to use lo...
Exceptions the Other Way Round - Sean Parent - CppNow 2022
Views 4.8K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Exceptions the Other Way Round - Sean Parent - CppNow 2022 When discussing exceptions, there is a focus on when to throw an exception and how to propagate it. But little attention is given to how to recover from an exception. By looking at error handling from what it means to recover from a mistake, we can unde...
The Nth Element: A Case Study - Kris Jusiak - CppNow 2022
Views 1.3K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ The Nth Element: A Case Study - Kris Jusiak - CppNow 2022 Variadic packs have been with us since C 11, however getting the nth element efficiently out of a variadic pack still remains not optimal/difficult. During the years, with new standards emerging, more and more approaches have been discovered but no silve...
C++ Standard Parallelism - Bryce Adelstein Lelbach - CppNow 2022
Views 3.2K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ C Standard Parallelism - Bryce Adelstein Lelbach - CppNow 2022 Imagine writing parallel code that can run on any platform - CPUs, GPUs, DPUs, specialized accelerators, etc - without any language or vendor extensions, external libraries, or special compilation tools. It's no longer just a dream - you can do it t...
Redesigning Legacy Systems : Keys to Success - Peter Muldoon - CppNow 2022
Views 1.3K14 days ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Redesigning Legacy Systems : Keys to Success - Peter Muldoon - CppNow 2022 Many projects suffer from a lack of software engineering practices and proper system analysis. Legacy Production code with a large user base is hitting its limits in terms of performance and maintainability. A way forwards is needed, can...
Maphoon: A C++ based Parser Generator - Hans de Nivelle - CppNow 2022
Views 1.1K21 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Maphoon: A C based Parser Generator - Hans de Nivelle - CppNow 2022 Maphoon is a tool for generating parsers in C . The tool is written in C 17, and creates parsers in C . When compiling a programming language (like for example Python or Java) the first step is to read the input text and create a tree represent...
C++ Coroutines, from Scratch (part 2 of 2) - Phil Nash - CppNow 2022
Views 90021 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ C Coroutines, from Scratch (part 2 of 2) - Phil Nash - CppNow 2022 C 20 introduced coroutines into the language. Coroutines have the potential to greatly simplify some types of code - particularly, but not limited to, anything asynchronous in nature. But early adoption has been hindered by both the lack of libr...
C++ Coroutines, from Scratch (part 1 of 2) - Phil Nash - CppNow 2022
Views 2.3K21 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ C Coroutines, from Scratch (part 1 of 2) - Phil Nash - CppNow 2022 C 20 introduced coroutines into the language. Coroutines have the potential to greatly simplify some types of code - particularly, but not limited to, anything asynchronous in nature. But early adoption has been hindered by both the lack of libr...
Searching for Convergence in C++ Package Management - Bret Brown & Daniel Ruoso - CppNow 2022
Views 1.9K21 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Searching for Convergence in C Package Management - Bret Brown & Daniel Ruoso - CppNow 2022 As a follow-up to our “Lessons Learned Packaging 10,000 C Projects” talk at CppCon 2021, we would like to review the conversations taking place between ISO C Committee's Tooling Study Group (SG15) and package management ...
Typescripten: Generating type-safe JavaScript bindings for emscripten - Sebastian Theophil CppNow 22
Views 55321 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Typescripten: Generating type-safe JavaScript bindings for emscripten - Sebastian Theophil CppNow 22 WebAssembly has become a very popular target platform for C developers. Thanks to emscripten, porting native applications to WebAssembly is easy - as long as the application only uses the browser as a display an...
Concurrency in C++: A Programmer’s Overview (part 2 of 2) - Fedor Pikus - CppNow 2022
Views 1.8K21 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Concurrency in C : A Programmer’s Overview (part 2 of 2) - Fedor Pikus - CppNow 2022 This talk is an overview of the C facilities for concurrent programming across different standard versions, from C 11 to C 20. C 11 was the first concurrency-aware C standard, and we will see what we got, what works, what sort ...
Concurrency in C++: A Programmer’s Overview (part 1 of 2) - Fedor Pikus - CppNow 2022
Views 3K21 day ago
Slides: github.com/boostcon CppNow Website: www.cppnow.org​ CppNow Twitter: @CppNow​ Concurrency in C : A Programmer’s Overview (part 1 of 2) - Fedor Pikus - CppNow 2022 This talk is an overview of the C facilities for concurrent programming across different standard versions, from C 11 to C 20. C 11 was the first concurrency-aware C standard, and we will see what we got, what works, what sort ...
Quasi-Static Template Registration and Generalized Serialization-Like Reconstruction and Traversal
Views 79321 day ago
Quasi-Static Template Registration and Generalized Serialization-Like Reconstruction and Traversal
Message Handling in Embedded: a Declarative, Modern C++ Approach - Michael Caisse - CppNow 2022
Views 3.1K28 days ago
Message Handling in Embedded: a Declarative, Modern C Approach - Michael Caisse - CppNow 2022
Durable Integer Arithmetic - Andreas Weis - CppNow 2022
Views 1.3K28 days ago
Durable Integer Arithmetic - Andreas Weis - CppNow 2022
Taking Static Type-safety to the Next Level: Physical Units for Matrices - Daniel Withopf CppNow 22
Views 1K28 days ago
Taking Static Type-safety to the Next Level: Physical Units for Matrices - Daniel Withopf CppNow 22
Rust Features that I Want in C++ - David Sankel - CppNow 2022
Views 6KMonth ago
Rust Features that I Want in C - David Sankel - CppNow 2022
Master Value Categories With Standard Tools - Inbal Levi - CppNow 2022
Views 851Month ago
Master Value Categories With Standard Tools - Inbal Levi - CppNow 2022
CMake 2022 C++ Modules and More - Bill Hoffman - CppNow 2022
Views 4.5KMonth ago
CMake 2022 C Modules and More - Bill Hoffman - CppNow 2022
Managing External API’s in Enterprise systems - Peter Muldoon - CppNow 2022
Views 554Month ago
Managing External API’s in Enterprise systems - Peter Muldoon - CppNow 2022
Principia Mathematica: The Foundations of Arithmetic in C++ - Lisa Lippincott - CppNow 2022
Views 1.6KMonth ago
Principia Mathematica: The Foundations of Arithmetic in C - Lisa Lippincott - CppNow 2022
What Makes Good C++ Programmers: a Continuous Search for C++ Teaching Recipes - Amir Kirsh CppNow 22
Views 1.4KMonth ago
What Makes Good C Programmers: a Continuous Search for C Teaching Recipes - Amir Kirsh CppNow 22
Why Iterators Got It All Wrong - and what we should use instead - Arno Schödl - CppNow 2022
Views 2.6KMonth ago
Why Iterators Got It All Wrong - and what we should use instead - Arno Schödl - CppNow 2022
A Practical Approach to Error Handling - Arno Schödl - CppNow 2022
Views 2.1KMonth ago
A Practical Approach to Error Handling - Arno Schödl - CppNow 2022
Undefined Behavior in C++: A Performance Viewpoint - Fedor Pikus - CppNow 2022
Views 2.1KMonth ago
Undefined Behavior in C : A Performance Viewpoint - Fedor Pikus - CppNow 2022
A Lock-free Atomic shared_ptr - Timur Doumler - CppNow 2022
Views 1.7KMonth ago
A Lock-free Atomic shared_ptr - Timur Doumler - CppNow 2022
Top 5 Library Additions in C++23 - Jeff Garland - CppNow 2022
Views 2.7KMonth ago
Top 5 Library Additions in C 23 - Jeff Garland - CppNow 2022
C++Now 2017: Daniel Pfeifer “Effective CMake"
Views 154K5 years ago
C Now 2017: Daniel Pfeifer “Effective CMake"
C++Now 2018: Rong Lu “C++ Development with Visual Studio Code”
Views 102K4 years ago
C Now 2018: Rong Lu “C Development with Visual Studio Code”
C++Now 2017: Niko Matsakis "Rust: Hack Without Fear!"
Views 57K5 years ago
C Now 2017: Niko Matsakis "Rust: Hack Without Fear!"
C++Now 2018: You Can Do Better than std::unordered_map: New Improvements to Hash Table Performance
Views 43K4 years ago
C Now 2018: You Can Do Better than std::unordered_map: New Improvements to Hash Table Performance
C++Now 2018: Michael Caisse “Modern C++ in Embedded Systems”
Views 38K4 years ago
C Now 2018: Michael Caisse “Modern C in Embedded Systems”
C++Now 2017: Ryan Newton "Haskell taketh away: limiting side effects for parallel programming"
Views 37K5 years ago
C Now 2017: Ryan Newton "Haskell taketh away: limiting side effects for parallel programming"
A Tutorial Introduction to C++11 & 14 Part 1
Views 37K8 years ago
A Tutorial Introduction to C 11 & 14 Part 1
2013 Keynote: Chandler Carruth: Optimizing the Emergent Structures of C++
Views 32K9 years ago
2013 Keynote: Chandler Carruth: Optimizing the Emergent Structures of C
P. Goldsborough “clang-useful: Building useful tools with LLVM and clang for fun and profit"
Views 29K5 years ago
P. Goldsborough “clang-useful: Building useful tools with LLVM and clang for fun and profit"
Sean Parent: Value Semantics and Concepts-based Polymorphism
Views 24K10 years ago
Sean Parent: Value Semantics and Concepts-based Polymorphism
C++Now 2017: Bryce Lelbach “C++17 Features"
Views 23K5 years ago
C Now 2017: Bryce Lelbach “C 17 Features"
Christopher Kohlhoff: Thinking Asynchronously: Designing Applications with Boost.Asio
Views 21K8 years ago
Christopher Kohlhoff: Thinking Asynchronously: Designing Applications with Boost.Asio
C++Now 2018: Ben Deane “Easy to Use, Hard to Misuse: Declarative Style in C++”
Views 20K4 years ago
C Now 2018: Ben Deane “Easy to Use, Hard to Misuse: Declarative Style in C ”
C++Now 2017: Ben Deane & Jason Turner "constexpr ALL the things!"
Views 19K5 years ago
C Now 2017: Ben Deane & Jason Turner "constexpr ALL the things!"
Michael Caisse: Introduction to Modern C++ Techniques (Part I)
Views 19K10 years ago
Michael Caisse: Introduction to Modern C Techniques (Part I)
Chandler Carruth: Refactoring C++ with Clang
Views 18K10 years ago
Chandler Carruth: Refactoring C with Clang
Beware of C++ - Nicolai Josuttis
Views 18K8 years ago
Beware of C - Nicolai Josuttis
C++Now 2019: Conor Hoekstra “Algorithm Intuition”
Views 18K3 years ago
C Now 2019: Conor Hoekstra “Algorithm Intuition”
Jon Kalb: Exception-Safe Coding in C++ (Part I)
Views 18K10 years ago
Jon Kalb: Exception-Safe Coding in C (Part I)
C++Now 2018: Titus Winters “Modern C++ API Design: From Rvalue-References to Type Design”
Views 18K4 years ago
C Now 2018: Titus Winters “Modern C API Design: From Rvalue-References to Type Design”
C++Now 2017: Tony Van Eerd “Postmodern C++"
Views 15K5 years ago
C Now 2017: Tony Van Eerd “Postmodern C "
C++: Engineers Wanted, Programmers not so Much - David Sankel - C++Now 2019
Views 15K2 years ago
C : Engineers Wanted, Programmers not so Much - David Sankel - C Now 2019
Intro to Functional Programming in C++
Views 14K7 years ago
Intro to Functional Programming in C
C++Now 2018: Mateusz Pusz “Git, CMake, Conan: How to Ship and Reuse our C++ Projects”
Views 14K4 years ago
C Now 2018: Mateusz Pusz “Git, CMake, Conan: How to Ship and Reuse our C Projects”
C++Now 2019: Kris Jusiak “Dependency Injection - a 25-dollar term for a 5-cent concept”
Views 13K3 years ago
C Now 2019: Kris Jusiak “Dependency Injection - a 25-dollar term for a 5-cent concept”
C++Now 2018: Alan Talbot “Moving Faster: Everyday Efficiency in Modern C++”
Views 12K4 years ago
C Now 2018: Alan Talbot “Moving Faster: Everyday Efficiency in Modern C ”
C++Now 2019: Tara Raj “C++ Development with Visual Studio Code”
Views 12K3 years ago
C Now 2019: Tara Raj “C Development with Visual Studio Code”
C++Now 2018: Jason Turner “Initializer Lists Are Broken, Let's Fix Them”
Views 12K4 years ago
C Now 2018: Jason Turner “Initializer Lists Are Broken, Let's Fix Them”
C++Now 2019: Kris Jusiak “Rise of the State Machines”
Views 12K3 years ago
C Now 2019: Kris Jusiak “Rise of the State Machines”
David Sankel: Big Projects, and CMake, and Git, Oh My!
Views 11K6 years ago
David Sankel: Big Projects, and CMake, and Git, Oh My!

Comments

  • Triangles!!!!!!!!!!!!!!!

    This is the talk about the _sc user-defined literal ruclips.net/video/Dt0vx-7e_B0/video.html

  • radbarij
    radbarij 6 days ago

    Really interesting approach instead of just using random "logWarning" to a log which nobody will ever read.

  • Domen Vrankar
    Domen Vrankar 7 days ago

    Inclusivity is a double way road that is unfortunately quite these days often not taken by people that wish to be included... There's always the talk about including new new-bee members and random people but from my experience there are two types of people (yes generalising to just include the extremes as the rest - non extreme people - are more often than not a minority and not problematic): 1. the ones that are far too arrogant to even consider they're in wrong and look at the things from the opposing view (or even better 3-10 of the valid opposing views) 2. people that are really willing to get included, have an open mind and admit when they're in lack of knowledge/understanding Oddly enough the second group is in my experience the minority in programming world and are in my experience the only ones that do fit well and are the ones that should be included. Community is a messed up thing these days...

  • Domen Vrankar
    Domen Vrankar 7 days ago

    I like the ideas but pretty pretty pretty please could we get a C++ version without attributes? I went through that Java attribute hell and I don't want to see that repeated in C++ again... I like the functionalities presented but if they'll be ported to C++ with attributes I'll call them not-worth-it no matter what.

  • Rafael Silva
    Rafael Silva 8 days ago

    I dunno Circle, but that statement seems BOLD. I mean Ruby is pure meta programming basically, they revived MVC with it. Very bold statement, not saying it's wrong, just saying this is something.

  • Voy2378
    Voy2378 9 days ago

    I feel bad for presenter, most of "questions" were just people interrupting to show how much they know, not questions.

  • Christian Kotz
    Christian Kotz 9 days ago

    Relational instead of just equality operators for types would be nice to implement efficient sets of types

  • dutiona
    dutiona 9 days ago

    This is a great and very interesting talk and Sean Parent really did a good job getting his point across. However, people interrupting the talk and even talking over him makes it difficult to watch. With a little bit of hindsight, what it tells is that the talks severely lacks relevant examples close to the statements being made. Indeed, there are a lot of vocabulary, lot of definitions and people kept on arguing about the real meaning of them to finally come up with satisfactory example to illustrate the statement so that Sean could finally resume. I think having relevant example close to the statements would have helped eluding/shortening the questions a lot. I hope this experience did not deter Sean from giving this talk again in the future and I'm looking forward to it.

  • Evgenii Sharaborin
    Evgenii Sharaborin 9 days ago

    It is funny to hear: "Remember that all of you are dummies...")

  • Matthias Berndt
    Matthias Berndt 9 days ago

    This is completely impossible to watch. *Way* too many people in the audience who only want to show off how smart they are instead of letting the presenter make his point.

  • Evgenii Sharaborin
    Evgenii Sharaborin 9 days ago

    Also, in boost 1.79.0, I checked would the insert complain if I try to insert to the fifth element. And it does not complain, even when I insert to 99. #include <boost/hana/tuple.hpp> #include <boost/hana/insert.hpp> #include <boost/hana/for_each.hpp> #include <boost/hana/size.hpp> #include <iostream> #include <assert.h> namespace hana = boost::hana; using namespace hana::literals; struct Cat { std::string name; }; struct Dog { std::string name; }; struct Elephant { std::string name; }; struct Fish { std::string name; }; template<typename T> bool operator==(const T& lhs, const T& rhs) { return lhs.name == rhs.name; } template <typename ...TypeInfos> constexpr std::size_t Tsize(hana::tuple<TypeInfos...> const& classes){ constexpr size_t tupleSize = decltype( hana::size(std::declval<hana::tuple<TypeInfos...>>()) )::value; return tupleSize; } int main(){ hana::tuple<Cat, Dog, Fish> animals{ Cat{"Garfield"}, Dog{"Beethoven"}, Fish{"Nemo"} }; // note we do copy auto more_animals = hana::insert(animals, 99_c, Elephant{"Dumbo"}); boost::hana::for_each(more_animals, [](auto c) { std::cout << "name=" << c.name << std::endl; }); // assert(more_animals[99_c] == Elephant{"Dumbo"}); // this will complain assert(more_animals[3_c] == Elephant{"Dumbo"}); // but this not. It seems that 99_c turns out => 3_c std:: cout << "Tsize=" << Tsize(more_animals)<< std::endl; }

  • Robert Russell
    Robert Russell 9 days ago

    I like the way he simplified working on parameter packs.

  • Evgenii Sharaborin
    Evgenii Sharaborin 9 days ago

    Thank you for the great presentation! It is awesome! Can hana::for_each iterate over std::tuple? When I try to reproduce, it does not. I think we need to use boost::hana::tuple?

  • Aron Rubin
    Aron Rubin 10 days ago

    A thousand times yes. I have always felt the dual role was problematic. I always figured that it was because I seem to be predisposed to off by one errors.

  • Dexter Man
    Dexter Man 10 days ago

    This is god so amazing

  • Roi Barkan
    Roi Barkan 11 days ago

    1:05:00 more on robin hood and hash tables ruclips.net/video/M2fKMP47slQ/video.html

  • Tamás Kenéz
    Tamás Kenéz 11 days ago

    One of the key ideas here that "aesthetics" should not be the goal reminds me of the views of ruclips.net/user/SabineHossenfelder who's criticizing contemporary physics that they're trying to find some theory with beautiful mathematics instead of working on what's important, to gain novel insight into how the world works.

  • Dexter Man
    Dexter Man 11 days ago

    Man some of the audience just don't seem to get the point "YoU cAn dO THaT IN c++ juST dO so And so aNd MAcro aND CLass" like bro do you want the language to evolve or not? I get that you like the language but if you really like it, accept the flaws and let it evolve. Please, let modern C++ not be stuck in the past. There's a reason Rust is voted most fav language 3 times in a row.

  • Voltra
    Voltra 12 days ago

    As far as I'm aware, the goal of a "chain of range operations" is to manipulate a sequence towards one goal, not preserving the results of what applying each step fully without the next one. The problem is that we can call base, but that's just an encapsulation issue

  • Roi Barkan
    Roi Barkan 12 days ago

    17:18 one potential efficiency consideration is aliasing. See ruclips.net/video/apAahC2TyMA/video.html

  • Arthur Rodrigues
    Arthur Rodrigues 12 days ago

    19:46 How does this `index_of` interact with the negative value being used as index? He said negative index values index from the end, so would this be a footgun if used immediately to index the pack (because it would return the last type)? What would be a "safe" alternative in case it is?

    • Sean Baxter
      Sean Baxter 8 days ago

      Possibly. Is this a problem in Python, which also supports negative indices?

  • Christian Brugger
    Christian Brugger 12 days ago

    Loved the part @22:00 The ubiquitous computing thing didn't age well. It's now 10 years later. Do we have what he described (photos, emails, movies) everywhere. That was 2012, is there much else? Not really. Syncing data / programs between devices is still hard, playing games online a niche, shooters forget it. And remote desktop usage is rare for obvious reasons. Are 2 GHz enough, probably not. And I still wouldn't want to daily drive my Tablet. We have 10x faster internet, SSDs and 8 core CPU's. And it didn't magically solve the problems. Apps are still slow, clunky, the ecosystem very scattered. This really shows how hard it is. Also unfortunately not much of what he was proposing went into the C++ standard about accessing even SIMD or GPU resources. I agree with his sentiment of C++ becoming like a scripting language. And his approach to deal with, to abstract algorithms, it is very sound.

  • ninepoints
    ninepoints 12 days ago

    That std::tuple is implemented in library space at all is honestly a travesty. Lot of nice ideas here.

  • Raymund Hofmann
    Raymund Hofmann 12 days ago

    Wouldn't it be good to have a "circle pre processor" to ease use and experimentation when fixed to popular compilers?

  • Rafael Silva
    Rafael Silva 12 days ago

    Not all interruptions were required, but good talk.

  • Paul McGee
    Paul McGee 13 days ago

    It's cool to hear these c++ experts that have done their own presentations over the years together trying to nut out a new concept.

  • sanjay gatne
    sanjay gatne 13 days ago

    Nice talk.

  • Voltra
    Voltra 13 days ago

    I love Circle

  • Curious Cauliflower
    Curious Cauliflower 13 days ago

    Modern C++ makes me want to cry.

  • Jonathan Higgs
    Jonathan Higgs 13 days ago

    You could reduce the boilerplate for `template <typename ... auto> typename Template` to just `template Template`

  • DEN TROFIMOV
    DEN TROFIMOV 13 days ago

    I hope project will find support (patreon, maybe?) or become opensource, otherwise it will be risky to use with big production code bases. A very interesting project but no serious company would ever allow this to touch their internal codebases unless the code is open source and/or reviewed by the community - which is sad.

  • jp48
    jp48 13 days ago

    4:50 Ok I'll borrow that one "C++ standard library code is a warning and not an advertisement"

  • Yash
    Yash 14 days ago

    1:08:21 LAL part (learn another language) 1:08:59 never heard of Forth before - will look into it

  • Yash
    Yash 14 days ago

    1:10:26 glad to have my original conclusion confirmed about functional programming : "everything's recursion (in it)"

  • sam laki
    sam laki 14 days ago

    Crazy we come so far doing all this magic at compile time. Might be useful when we are paying dimes for bytes on the cloud.

  • Yash
    Yash 14 days ago

    49:07 > _"buyers can return for a full refund" ; _*_"and this actually becomes an important note in a moment"_* wow, didnt think it would be important

  • rtxA
    rtxA 15 days ago

    A RUclips feature to skip interruptions in a conference talk would be good

  • G Bringhurst
    G Bringhurst 15 days ago

    At 1:02:20 the questioner asks an important semantic question, yet Arno insists that the question is syntactic bike shedding. I understand why the question was frustrating but the response was really poor. My opinion is that the core of this talk is a semantic nightmare.

  • Julien Villemure-Fréchette

    Thanks, great talk. Some questions remain though. In the description of the term "precondition", it is stated that failure to meet an operation's preconditions leads to undefined behaviour. Later on, the definition of the term "safe operation", is guaranteed to be free of undefined behaviour. However, the subclause "even if preconditions are not met" apparently looks to be in contradiction with the definition of "precondition", for which must lead to undefined behaviour if they are not met (unless the set of precondition is vacuously empty). I've been looking in the standard to make sure I'm not overlooking some details about the precise meaning of "undefined behaviour". I came across 3.65 Note 1: "... Evaluation of a constant expression (7.7) never exhibits behavior explicitly specified as undefined in Clause 4 through Clause 15. -end note]". But, clauses 4-15 excludes all the standard library (clauses 16-33). Should this imply that the implementation be required to detect and fail compilation on occurences of those explicitly specified UB from clauses 4-15 (when they occur as evaluation of a constant expression)? If yes, then it could make sense to categorize UBs into 2 classes: "compile-time detectable UB", and its set complement? (Note: compile time detectable UB need not be detected at runtime). Can this discrimination of UB, if it is sensible, be of any help in refining the conceptual model of "safety"? Could we say that the original intent behind the term "safe" would be better expressed as "cannot lead to compile-time detectable UB and/or is non deterministic (unspecified) if preconditions are not met"?

  • Wutt Wongsakuldej
    Wutt Wongsakuldej 15 days ago

    It'd be nice for this presentation without audiences. I can't follow as people keep arguing.

  • Rostislav Stelmach
    Rostislav Stelmach 16 days ago

    Sean Parent is great as always, but I can’t fully watch this specific talk. People are keep interrupting and talking all the time, which is not a behaviour you would expect from an adult! Is it hard to write down the question and ask it in the end? Common people, you are in a conference that being recorded, act accordingly!

    • Think
      Think 9 days ago

      I think the discussion is actually valuable. Those are all top leaders in C++: authors, paper writers, standards committee people, and those who regularly critique and interpret the standards. They have valuable questions and discussions that add to our understanding. The only problem is a lack of a microphone, so we can't HEAR them on the video. There needs to be some kind of ball that they can throw around to each other and that has a microphone built ibuilt-in I actually wish there was a LOT MORE of this kind of discussion recorded for us. It would be IMMENSELY valuable to have an entire format like that on purpose! "Grill the Committees" exist and are good, but I wish we had a ton of these focused, highly expert, open discussions on high-end topics like this, intentionally created to be that way. That would be amazing and arguably BETTER than most "talks," which are just lectures. But we absolutely have to FORCE the participants to use a mic, and it has to be very fast to get the mic so the flow is uninterrupted. Thus the ball-microphone idea.

    • Edward Meewis
      Edward Meewis 10 days ago

      I disagree. Conferences are held for and payed by the attendees, therefore they get the privilege of interacting with the speaker. I, for one, am grateful for the organisers to publish the recordings online, because I've learnt a great deal from the material presented from this and many other conferences. - Ed.

    • Paul McGee
      Paul McGee 12 days ago

      That's what CppNow is for - interaction & discussion. There are relatively few non-presenter people attending.

    • 12nites12
      12nites12 14 days ago

      I do agree that they went overboard in this particular case but, in general, most presenters prefer an interacting audience (I know I do). Actually, cppnow encourages the audience to make (genuine) questions during the talk. I think the people that actually went to the conference have the right to carry it out however they please (as long as everyone is ok with it). I didn't pay for this conference and I'm watching this for free in the comfort of my own home, so I'm just thankful for it and I will decide whether to watch it or not, without making demands.

    • Ricky Flores
      Ricky Flores 15 days ago

      seriously, they don't let him explain his ideas they just kept wanting to hear themselves make points

  • Daniel
    Daniel 16 days ago

    Just a little bit of constructive criticism -- seems like speaker didn't really know his presentation very well, or lacked confidence in his delivery... constantly going back to computer to look at his speaker notes. It's really distracting and it disrupts the speaker's cadence and continuity. I'm not saying the speaker doesn't know his /topic/ well, it was interesting and useful to me. But he's either not natural at presenting or didn't spend enough time preparing. The last time I saw someone going back and forth like this, it was clear the person presenting was not the person who created the presentation (don't think that's the case here). Still, kudos for presenting a useful topic and for having the courage to present.

    • Frydac
      Frydac 9 days ago

      I don't completely disagree, but I think the talk was well structured and easy to follow, for me it didn't bother me when he was looking at his screen, and I think he has a pleasant and intelligible way of speaking. The last few years imo the average quality of C++ talks has gone down dramatically as the number of them increased, and for me this talk was pretty well done in comparison.

    • sam laki
      sam laki 14 days ago

      Dan, thanks for your advice, I ain't the speaker but could always learn watching others.

  • Oleksii Skidan
    Oleksii Skidan 16 days ago

    Thanks for sharing the SSID and the WiFi password! J Great talk, thanks for sharing this :^)

  • Nicholas Braden
    Nicholas Braden 16 days ago

    1:39:25 The overcommit problem with memory allocation makes me furious. If I have two documents open, one with unsaved changes, and I try to open a third very large document without enough memory, that should be able to just throw bad_alloc and undo the attempted memory allocations and give me a cheaper error message popup to say there's not enough memory, allowing me to close and save work. Instead the behavior is that applications have no idea when touching memory will fail and cause them to crash and burn, losing all unsaved work. They have to actively check memory usage, or the user has to disable overcommit for the whole system. How is that acceptable in any context? No matter what programming language you use, you can't even do a basic guard against this? C++ had this problem solved from the beginning with bad_alloc and everyone just ignored it, why?

    • krumbergify
      krumbergify 14 days ago

      There is actually a modern programming language (which competes with C) that cares a lot about allocation failures - Zig. Search for ”the road to zig 2019” on RUclips and you will find a great talk by the language creator Andrew Kelly.

    • Michael Hava
      Michael Hava 15 days ago

      I 100% agree! The notion of "you can't handle memory exhaustion anyways" is really dumb, yet there are multiple high-profile engineers that keep repeating it... (Same with "well, if a parallel algorithm fails that's gotta be a hard error"...)

  • Will Wu
    Will Wu 17 days ago

    Love it. Bunch of nerds goin ham on expanding integer sequences. These crazy lambdas i can barely wrap my head around lol... For runtime indexing idk if all of them are inlined at Os, but they definitely are at O3... Or it could just be me accidentally adding a brace or a bracket.. These facilities are totally doable by the compiler/language its exciting to see where this leads! Awesome talk

  • Matthew Rowles
    Matthew Rowles 17 days ago

    I think that the comment about c++11 only now reaching everyone is telling. How much effort is being duplicated among all the different compilers in maintain their libraries? What is even the point of talks on C++23 features when no one can use them until 2025-6,and get won't reach full penetrative for another 10 years? We need a more python-like upgrade schedule.

  • Šimon Tóth
    Šimon Tóth 18 days ago

    Border is not a thing. What algorithms can return is the end iterator of subrange. And since ranges in C++ are expressed as [first, last), that means that the returned end iterator is not part of the range it is denoting. Now naturally that means that if you do things that constrain the range and run the algorithms on the constrained range, you will get the end iterator for the constrained subrange, which is not necessarily the same as the end iterator if you would run the algorithm on the uncontrained range. You don't even have to filter (which skips over some elements), you can just take a simple prefix.

  • Dr Shagar Majumder
    Dr Shagar Majumder 19 days ago

    Really helpfull tutorials. Helped a lot

    • CppNow
      CppNow 15 days ago

      Glad to hear that!

  • 27182818284590452354e-19

    Is being implemented in it the only connection to C++? The lexer has a partial DSL implementation using operator overloading, but that's about it. Seemed like a prime opportunity to showcase constexpr instead of basic C codegen. But even more surprising is that Maphoon syntax isn't done in-language, which is completely feasible in C++20. What a bizarre choice for this con.

  • iaguitos
    iaguitos 21 day ago

    46:00 They totally should have not call it "zip_reduce" and specially not if i got this talk right. You ""could"" get that before, its comming in c++23 i think, you make a pair combining each elem, pass it to transform, and then unbind them inside. zip plus reduce is not what you want, is what you would had to do to overcome not having a way to transform_reduce in this way. You can use transform_reduce without ever knowing what zip is, it will still solve your problem -using this other range(vector) to transform this result/this one. Thinking of it as a zip is intuitive, but in the wrong way...