Giter Site home page Giter Site logo

Comments (6)

ColinH avatar ColinH commented on May 14, 2024 2

Since it seems to fit with both the design of the library and the code we decided to implement a getter called basic_value::variant() instead of basic_value::visit(), which is more flexible.

from json.

ColinH avatar ColinH commented on May 14, 2024 1

It seems to be easy, please try with the latest commit - and let's hope that I didn't miss any important reason why it can't always be so easy :-)

from json.

d-frey avatar d-frey commented on May 14, 2024

Are we sure we want to do it this way? We could also expose the variant with an accessor (getter) and instead of v.visit( vis ); you'd write std::visit( vis, v.variant() );. Benefit: You can have visitors to visit multiple variants at once, the exposed variant can be queried for .index(), etc. and you can use other standard methods on it. I guess the real question we need to ask is: How much is m_variant an implementation detail or how much do we want to expose it?

(I even considered deriving from std::variant briefly, but that might have other implications.)

from json.

Siapran avatar Siapran commented on May 14, 2024

alternatively, specializing or providing the interface needed for std::visit (std::get and index I believe?)

from json.

d-frey avatar d-frey commented on May 14, 2024

Unfortunately that is not allowed, std::get is not a customization point from the standard's point of view. (I would have preferred it, but yeah, not allowed)

from json.

ColinH avatar ColinH commented on May 14, 2024

@d-frey Yes, how far do we want to expose the variant? I guess at this point there aren't too many reasons to keep it private? We advertise as being standard containers based, we use the standard string classes, so we might as well complete the picture. And then offering a getter could replace visit().

from json.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.