[cfe-dev] Visibility of inline defined friend template function

Will Wilson will at indefiant.com
Tue Jul 9 11:32:32 PDT 2013


FYI: GCC also seems to accept the code.


On 9 July 2013 17:38, Will Wilson <will at indefiant.com> wrote:

> Hi All,
>
> A quick question regarding correct behaviour:
>
> class Vec3 {
> public:
> friend void DoA(Vec3& a) {
>  a.m_int = 1;
> }
>
> template <const bool B>
>  friend void DoT(Vec3& a) {
> if (B)
> a.m_int = 2;
>  }
> private:
> int m_int;
> };
>
> void test_friend_functions_inline() {
>  Vec3 a;
> DoA(a);
> DoT<true>(a);  // error: use of undeclared identifier 'DoT'
> }
>
> This compiles in MSVC but not clang. Any idea what's doing the right
> thing? I'm running into it with squish-ccr:
> https://github.com/Ethatron/squish-ccr/blob/master/simd_sse.h which makes
> extensive use of the inline-friend-template-function pattern.
>
> Thanks!
> Will.
>



-- 
*Indefiant Ltd.*
*
*
Firsby Lodge, New Main Road, Scamblesby, Louth, Lincs LN11 9XH UK
*Tel: +44 20 8123 7663 England Registered No. 07936820 VAT No. **128556202*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130709/ba7264d7/attachment.html>


More information about the cfe-dev mailing list