Skip to content

[ENHANCEMENT]: Provide helper function cuco::experimental::make_static_set et al #370

Open

Description

@esoha-nvidia

Is your feature request related to a problem? Please describe.

I would like a function called make_static_set that will create a static set that will infer the template arguments from the function call.

Describe the solution you'd like

Instead of:

auto set = cuco::experimental::static_set<MyKeyType, MyExtent, MyThreadScope, MyKeyEqual>(capacity, cuco::empty_key(-1), MyKeyEqual(123));

I could write:

auto set = cuco::experimental::make_static_set(capacity, cuco::empty_key(-1), MyKeyEqual(123));

Notice how it's much smaller and I'm not repeating myself. Notice the addition of the work "make". This is consistent with the stdlib's usage of the word make in, for example, std::make_tuple

Describe alternatives you've considered

I can do without but its wordy. Doing this doesn't add much work for cuco. Cuco can modify some of its tests to use this form of the instantiation so that it is tested well in CI.

Additional context

Inference only works on functions, not classes: https://stackoverflow.com/questions/797594/when-a-compiler-can-infer-a-template-parameter

Here's how make_tuple works: https://en.cppreference.com/w/cpp/utility/tuple/make_tuple

Activity

  1. changed the title [-][ENHANCEMENT]: Helper functions for making a static_set et al[/-] [+][ENHANCEMENT]: Provide helper function cuco::experimental::make_static_set et al[/+] on Sep 21, 2023
  2. jrhemstad commented on Sep 21, 2023

    @jrhemstad
    Collaborator

    Inference only works on functions, not classes: https://stackoverflow.com/questions/797594/when-a-compiler-can-infer-a-template-parameter

    This is no longer true as of C++17 with "Class Template Argument Deduction" (CTAD). CTAD has all but made make_* functions obsolete.

  3. sleeepyjack commented on Sep 21, 2023

    @sleeepyjack
    Collaborator

    Yes, the error you are seeing is due to us struggling with getting CTAD right 🙃
    I wonder if this is something we can fix with a deduction guide?

  4. PointKernel commented on Sep 21, 2023

    @PointKernel
    Member

    Yes, the error you are seeing is due to us struggling with getting CTAD right 🙃 I wonder if this is something we can fix with a deduction guide?

    There are a few things in my mind to improve the situation. Wait for my PR(s)

  5. esoha-nvidia commented on Sep 21, 2023

    @esoha-nvidia
    ContributorAuthor

    I can test it very easily if you need. Let me know.

  6. PointKernel commented on Sep 22, 2023

    @PointKernel
    Member

    https://godbolt.org/z/4Y4WYfxcK

    @esoha-nvidia actually, your example would deduce just fine even with the current implementation. Any other examples you would like to make them work?

  7. PointKernel commented on Oct 2, 2023

    @PointKernel
    Member

    Updates: now with #346 being merged. Plain integers can be deduced as well.

    https://godbolt.org/z/Wsbr17fh5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2: Nice to haveDesired, but not necessarytype: improvementImprovement / enhancement to an existing function

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions