This is the mail archive of the gcc-patches@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: [05/13] Add nofree_ptr_hash


Jeff Law <law@redhat.com> writes:
> On 06/25/2015 03:49 AM, Richard Biener wrote:
>> On Thu, Jun 25, 2015 at 5:19 AM, Jeff Law <law@redhat.com> wrote:
>>> On 06/24/2015 02:23 AM, Richard Sandiford wrote:
>>>>
>>>> Jeff Law <law@redhat.com> writes:
>>>>>
>>>>> So I'm holding off on approving this one pending further discussion of
>>>>> the use of multiple inheritance for nofree_ptr_hash.
>>>>
>>>>
>>>> I thought that might be controversial. :-)  My two main defences are:
>>>>
>>>> 1) This is multiple inheritance of traits classes, which all just have
>>>>      static member functions, rather than multiple inheritance of data-
>>>>      carrying classes.  It's really just a union of two separate groups
>>>>      of functions.
>>>
>>> As I was thinking about this during review I almost convinced myself that
>>> multiple inheritance from traits classes ought to be acceptable.
>>>
>>> As you state, they don't carry data and we're just getting a union of their
>>> functions.  One could probably even argue that traits classes by their
>>> nature are designed to be composed with other traits and classes.
>>>
>>> I'm (obviously) not as well versed in this stuff as I ought to be, hence my
>>> conservatism.  It'd be real helpful if folks with more real world experience
>>> in this space could chime in on the pros/cons if this approach.
>>>
>>> If we do go forward, ISTM updating our coding conventions to codify this
>>> exception to the "avoid MI" would be wise.  And my inclination is to go
>>> forward, but let's give other folks a chance to chime in.
>>
>> Yes, I think this is ok.
> Works for me.  Richard S., as a follow-up can you update the coding 
> conventions, which I think it maintained in the ancient CVS repo for the 
> web pages (ping Gerald if you're unfamiliar with it).

OK, sounds good.  How does this look?

Thanks,
Richard

Index: htdocs/codingconventions.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/codingconventions.html,v
retrieving revision 1.71
diff -u -r1.71 codingconventions.html
--- htdocs/codingconventions.html	9 Jul 2014 00:03:05 -0000	1.71
+++ htdocs/codingconventions.html	25 Jun 2015 17:31:39 -0000
@@ -888,6 +888,9 @@
 On the rare occasion that using mulitple inheritance is indeed useful,
 prepare design rationales in advance,
 and take special care to make documentation of the entire hierarchy clear.
+(In particular, multiple inheritance can be an acceptable way of combining
+"traits"-style classes that only contain static member functions.
+Its use with data-carrying classes is more problematic.)
 </p>
 
 <p>


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