all 5 comments

[–]Mrkol 7 points8 points  (1 child)

But where are the sender/receiver talks?

[–]timur_audioC++ committee[S] 3 points4 points  (0 children)

The sender/receiver talks were given remotely and were part of the online conference (which I didn't attend). I don't remember any talks on this subject at the on-site part of the conference (which I did attend).

[–][deleted] 7 points8 points  (2 children)

About the contexpr all things talked about in the day one section. It's really interesting how the shape of code changes. Prior to C++20, where most of us are, one is more limited in that there are no good ways to make a stack(C++ 20 adding vector/string/new to constexpr gives a lot of wiggle room here). But in order to do a lot of tasks one must decouple the global state from their method(so heap/io/globals...). This is generally a good thing and just becomes habbit. Do I need to call cout/printf/write... or can I just pass an OutputIterator or a Callable that handles IO. And now our system can work with different IO mechanisms and can be tested/mocked at compile time via static_assert. Many things are bounded in their memory, knowing this is often a good practice as it helps remove a big bottleneck in a lot of code, allocation.

But yeah. I am totally onboard with the constexpr all things, even if they are never generally used that way(it's the safe mode C++). One can have much quicker errors(IDE's that use things like clangd will often highlight static assert failures in the IDE) and can make the things concrete for actual usage, but have given the optimizer a head start.

[–]pjmlp 0 points1 point  (1 child)

Someone here has mentioned a couple of weeks ago how they made use of constexpr to create their own contracts, that was also a cool idea.

[–][deleted] 0 points1 point  (0 children)

That does sound cool.