http://llvm.org/bugs/show_bug.cgi?id=9785

Douglas Gregor <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #1 from Douglas Gregor <[email protected]> 2011-10-09 18:30:06 CDT 
---
Clang is actually behaving correctly here. The friend struct template
declaration here:

namespace detail {
    template <class T>
    struct Info {
        template <class X> friend struct Test;    
    protected:
        Info(int) {}
    };
}

actually makes the struct template "detail::Test" a friend, because friend
declarations refer to the innermost enclosing namespace. 

The right way to do this would be:


template <class T> struct Test;

namespace detail {
    template <class T>
    struct Info {
        template <class X> friend struct ::Test;    
    protected:
        Info(int) {}
    };
}

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to