This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: style convention: /*foo_p=*/ to annotate bool arguments


On 04/10/16 13:40, Nathan Sidwell wrote:
> On 10/03/16 19:48, Martin Sebor wrote:
>> In a recent review Jason and I discussed the style convention
>> commonly followed in the C++ front end to annotate arguments
>> in calls to functions taking bool parameters with a comment
>> along the lines of
>>
>>   foo (1, 2, /*bar_p=*/true);
> 
> I like this if there's more than one boolean arg.  If there's only one,
> I'm ambivalent.
> 
> 
>>   // In some header:
>>   void foo (int, int, bool = -1);
>>
>>   // In some .c file:
>>   void foo (int x, int y, bool bar_p /* = false */)
> 
> I think this is a good idea -- I've sometimes been puzzled by only
> looking at the defn, because it happened to be in the same file as the
> call site I was examining.
> 
> As has been mentioned, this does allow the decl and in-def comment to
> diverge. How about something like:
> 
> void foo (int, T = ...);
> 
> void foo (int x, T y /* = default */)
> {
> }
> 
> ?
> 
> nathan
> 
> 

This would have been easier if C++ had allowed the same default value to
be given in both the declaration and the definition:

void foo(int x, int y, bool bar_p = false);

void foo(int x, int y, bool bar_p = false)
{
}

It seems strange that this is not allowed.  The standard says "A default
argument shall not be redefined by a later declaration (not even to the
same value)", but I can't think /why/ it is not allowed.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]