Skip to content

zstring family require empty template parameter list for use #992

Closed

Description

@asdasdasdasdasdf

Based on the cpp core guidelines I expect to be able to write code like this
int length(zstring p);
but with this gsl implementation the code must look like this (at least on my compiler)
int length(zstring<> p);

I infer from the unit tests that this problem is not specific to me or my compiler. See for example:

czstring<> str = name.assume_z();

Not sure if this is a problem with the core guidelines or the gsl implementation but based on #770 it seems like the type alias shouldn't be templated.

zstring<> is only marginally worse than zstring but the time wasted figuring out why the example code wouldn't compile in practice is my primary concern.

Activity

  1. JordanMaples commented on Aug 18, 2021

    @JordanMaples
    Contributor

    I've reached out the C++ Core Guidelines editors for comment on whether or not we should redefine zstring to remove the empty angle brackets.

  2. hsutter commented on Sep 30, 2021

    @hsutter
    Contributor

    Echoing this question from the Guidelines issue: Do we have data about whether the extra parameter is used in the field?

  3. SloppyJaconda commented on Sep 30, 2021

    @SloppyJaconda
    Contributor

    I ran a quick search on Github for zstring and czstring to see how users are using *zstring and found that the majority of uses just have empty angle brackets. I came across a couple uses where the user does specify an extent, here is one such case:
    https://github.com/luncliff/coroutine/search?q=zstring. Most of the other hits that I found were clones or copies of this coroutine library.

  4. SloppyJaconda commented on Sep 30, 2021

    @SloppyJaconda
    Contributor

    whoops, didn't mean to close.

  5. dmitrykobets-msft commented on Jan 10, 2022

    @dmitrykobets-msft
    Contributor

    This issue has now been resolved in PR #998

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions