Skip to content

Decide how to indent class template definitions #1754

Closed

Description

@tkoeppe

We currently have several different styles of indenting class template definitions. Usually, every "structural" line break causes an extra indent level, like we have in synopses:

namespace std {
  template <typename T>
    class foo;
}

But when it comes to definitions, we sometimes follow this convention and othertimes we violate it:

  1. "No linebreak after template":

    namespace std {
      template <typename T> class foo {
      public:
        void bar();
      };
    }
    
  2. "linebreak and indent":

    namespace std {
      template <typename T>
        class foo {
        public:
          void bar();
        };
    }
    
  3. "linebreak with no indent":

    namespace std {
      template <typename T>
      class foo {
      public:
        void bar();
      };
    }
    

Of these three options, (1) and (2) seem the most consistent. Option (1) is not always feasible when the template parameter list is long. However, option (3) is used a lot, especially in the older parts of the text (e.g. [containers]).

For now, I will probably retain the local style, though if I need to add missing namespace std {s and the indentation changes, I might as well remove instances of (3). But it would be good to decide on a definite style and record that in the wiki. (My vote would be to allow only (1) and (2).)

Activity

  1. added
    decision-requiredA decision of the editorial group (or the Project Editor) is required.
    on Oct 13, 2017
  2. jensmaurer commented on Nov 7, 2017

    @jensmaurer
    Member

    Editorial meeting consensus: 1 and 3 for definitions and 1 and 2 for non-defining declarations. Also have line breaks between definitions.

  3. removed
    decision-requiredA decision of the editorial group (or the Project Editor) is required.
    on Nov 7, 2017
  4. jensmaurer commented on Feb 16, 2018

    @jensmaurer
    Member

    This seems to override the decision in #1576 and address #1516.

  5. jensmaurer commented on Feb 16, 2018

    @jensmaurer
    Member

    When performing any changes, make sure to also consider "namespace std" wrappers: #1168.

  6. added
    bigAn issue causing a large set of changes, scattered across most of the text.
    on Feb 16, 2018
  7. jensmaurer commented on Feb 16, 2018

    @jensmaurer
    Member

    Let's double-check our decisions in Jacksonville (cognizant of earlier wobbling) before embarking on a harmonization frenzy.

  8. added
    decision-requiredA decision of the editorial group (or the Project Editor) is required.
    on Feb 16, 2018
  9. tkoeppe commented on Mar 17, 2018

    @tkoeppe
    ContributorAuthor

    Decision confirmed with @zygoloid. I updated the wiki to replace contradictory information with guidance that matches this decision.

  10. removed
    decision-requiredA decision of the editorial group (or the Project Editor) is required.
    on Mar 17, 2018
  11. added a commit that references this issue on Apr 2, 2018
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

    bigAn issue causing a large set of changes, scattered across most of the text.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions