[LLVMbugs] [Bug 7308] New: Clang doesn't consider conversion function template friends.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Jun 5 07:19:59 PDT 2010


           Summary: Clang doesn't consider conversion function template
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: schaub-johannes at web.de
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com

Clang doesn't like this, saying that "u.m_a" is private. 

template <class T>
class A
    template <class U>
    operator A<U>() {
        A<U> u;
        u.m_a = m_a; 
        return u;

    template <class U> template<class V>
    friend A<U>::operator A<V>();
    int m_a;

void f() {
   A<int> a = A<double>();

There seems to be poor support for such friends. Comeau fails with an ICE
assertion failure and GCC doesn't like it either. 

I believe this program is correct according to the Standard (however the
Standard says that you can define function template friends in the friend
declaration - this can't be true for member function templates. Sounds like the
text treats "member function template" and "member template" as being mutually

If this is indeed not valid, it would seem to be a good thing to reject this
straight away when the template is parsed.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list