It's very interesting on paper (i.e. in a code review). It's full of good ideas. Such code is relatively easy to use and to review. But I'm a pragmatic developer. And in the debugger, that's a whole other story. If the meta_struct is composed of 2 iterators to a deque and 1 bool, and a function returns such an object, finding the value of the bool member in gdb is challenging.
You know, the variable layout of the fields in a structure, as well as automatic AOS to SOA was a fundamental feature of the JOVIAL language. That was in 1958, making it, along with ALGOL itself, one of the first block-structured languages. This particular feature did not catch on and as far as I know was not part of any other major language on the ALGOL family tree.
34:00 That is actually really cool, I guess since the caller does the matching it's as efficient at runtime as having three reference parameters right? EDIT: Actually I think this can be done with minimal compile overhead and regular structs if person_ref has a template constructor
This talk showed a need for dynamic declaration for a type. I think cpp have to consider support "compiler time struct / class" and a way to convert them to "type / template".
It'd be kinda nice to add operator[] for get. I think it should be doable and could make it look more standard? Eg person.id vs person["id"]? Kinda like how lua tables allow . indexing and array indexing.
I think it is impossible. For get to work you need to know the value of the string at compile time, therefore it has to be inside . person["id"] is equivalent to get("id", person). But it needs to be get(person).
C++ gets more academic every update. It's sad. We use c++ for the performance. Stop trying to draw analogies to json parsing. You are killing the language.
It's very interesting on paper (i.e. in a code review). It's full of good ideas. Such code is relatively easy to use and to review. But I'm a pragmatic developer. And in the debugger, that's a whole other story. If the meta_struct is composed of 2 iterators to a deque and 1 bool, and a function returns such an object, finding the value of the bool member in gdb is challenging.
You know, the variable layout of the fields in a structure, as well as automatic AOS to SOA was a fundamental feature of the JOVIAL language. That was in 1958, making it, along with ALGOL itself, one of the first block-structured languages. This particular feature did not catch on and as far as I know was not part of any other major language on the ALGOL family tree.
34:00 That is actually really cool, I guess since the caller does the matching it's as efficient at runtime as having three reference parameters right?
EDIT: Actually I think this can be done with minimal compile overhead and regular structs if person_ref has a template constructor
This talk showed a need for dynamic declaration for a type. I think cpp have to consider support "compiler time struct / class" and a way to convert them to "type / template".
Great talk! However, the pointer highlighting is highly distracting due to low frame rate
It'd be kinda nice to add operator[] for get. I think it should be doable and could make it look more standard?
Eg person.id vs person["id"]?
Kinda like how lua tables allow . indexing and array indexing.
The field name is a template param.
So you can't get that array syntax
I think it is impossible. For get to work you need to know the value of the string at compile time, therefore it has to be inside .
person["id"] is equivalent to get("id", person). But it needs to be get(person).
this is crazy
He asked himself if he could do it never if he should, hahah, amazing metaprograming skill however I woudn't use it, because of compiletime
i'm cry
I wish there is an explanation for this complicated and ugly syntax 😭
C++ gets more academic every update. It's sad. We use c++ for the performance. Stop trying to draw analogies to json parsing. You are killing the language.
If you know C++ good, you can boost your code performance! This is true reason
@@TheIgoorR All of c++'s features, yet it's still slower than plain C
@@nickwilson3499 no, it is not.