On 9/24/20 12:46 AM, Aldy Hernandez wrote:


On 9/24/20 1:53 AM, Martin Sebor wrote:

Finally, unless both a type and function with the same name exist
in the same scope there is no reason to mention the class-id when
referencing a class name.  I.e., this

   value_range_equiv *allocate_value_range_equiv ();
   void free_value_range_equiv (value_range_equiv *);

is the same as this:

   class value_range_equiv *allocate_value_range_equiv ();
   void free_value_range_equiv (class value_range_equiv *);

but the former is shorter and clearer (and in line with existing
practice).

value_range_equiv may not be defined in the scope of range-query.h, so that is why the class specifier is there.

I see.  It's probably a reflection of my C++ background that this
style catches my eye.  In C++ I think it's more common to introduce
a forward declaration of a class before using it.

Just as a side note, the first declaration of a type introduces it
into the enclosing namespace so that from that point forward it can
be used without the class-id.  E.g., this is valid:

  struct A
  {
    // Need class here...
    class B *f ();
    // ...but not here...
    void g (B *);
  };

 // ...or even here:
 B* A::f () { return 0; }

Either way, the code is correct as is and I don't object to it,
just noting that (at least some of) the class-ids are redundant.

Martin

Reply via email to