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.