Source

Alt text:

A screenshot from the linked article titled “Reflection in C++26”, showing reflection as one of the bullet points listed in the “Core Language” section

  • BatmanAoD
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    What macros or attributes provide serialization in C++?

    • Zangoose@lemmy.worldOP
      link
      fedilink
      arrow-up
      1
      ·
      2 months ago

      My bad, that’s on me, it looks like the C++ libraries I found use either templates or boost’s reflection. There might be a way to do it with macros/metaprogramming but I’m not good enough at C/C++ to know.

      I’m learning rust and C at the same time and was mixing up rust’s features with C’s. Rust’s answer to reflection is largely compile-time macros/attributes and I mistakenly assumed C’s attributes worked similarly since they have the same name.

      • BatmanAoD
        link
        fedilink
        arrow-up
        3
        ·
        2 months ago

        Ah. Rust’s macros and the C preprocessor’s exist in vastly different universes. The C preprocessor is literally just a fancy programmatic copy-and-paste tool. Rust macros read the input source code and then execute other source code (the macro definition) to generate new source code that the compiler then reads.

        I love Rust, but Rust macros are arguably more of a footgun than compile-time reflection would be, and as amazing as serde is (and no, there’s nothing comparable in standard-compliant C++ yet), there’s a strong argument that compile-time reflection would be a preferable technique for deriving serialization, argument-parsing, and similar feature.