[cfe-dev] C++ friend Constructor with Templates

John McCall via cfe-dev cfe-dev at lists.llvm.org
Wed Sep 5 09:14:48 PDT 2018



> On Sep 5, 2018, at 11:01 AM, Matt Miller <mattmiller1 at gmail.com> wrote:
> 
> On Tue, Sep 4, 2018 at 10:27 PM, John McCall <rjmccall at apple.com <mailto:rjmccall at apple.com>> wrote:
> 
> 
>> On Aug 6, 2018, at 12:44 PM, Matt Miller via cfe-dev <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>> 
>> I was wondering if the following clang behavior is expected/standard compliant:
>> 
>> 1. non-template friend function (not constructor): compiles in gcc and clang
>> 2. non-template friend constructor: compiles in gcc and clang
>> 3. template friend function (not constructor): compiles in gcc and clang
>> 4. template friend constructor: compiles in gcc , but not clang
>> (compiled in clang 3.0.0 but not clang 3.1+)
>> 
>> Here is an example (use -DUSE_TEMPLATE to control whether the template
>> or non-template code is compiled):
>> 
>> https://godbolt.org/g/FT7Mzj <https://godbolt.org/g/FT7Mzj>
>> 
>> In the clang case for (4), it gives an error as if the friend
>> declaration was never made.
>> 
>> Looking at a C++ standard:
>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf>
>> 
>> It looks like section 14.3.5 gives an explicit example of a
>> non-template friend constructor being allowed.  In 17.5.4, it didn't
>> look like there was anything to indicate template friend constructors
>> are treated different than template friend non-constructor functions,
>> but maybe I'm missing a subtle point in that section or elsewhere.
> 
> No, it looks like a bug to me.  Would you mind filing it?
>   https://bugs.llvm.org <https://bugs.llvm.org/>
> 
> John.
> 
> Opened bug 38578:
> 
> https://bugs.llvm.org/show_bug.cgi?id=38578 <https://bugs.llvm.org/show_bug.cgi?id=38578>
Thanks!

John.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180905/28629ce6/attachment.html>


More information about the cfe-dev mailing list