[問題] friend function定義在class裡

看板C_and_CPP (C/C++)作者 (靜夜)時間7年前 (2019/02/13 14:55), 7年前編輯推噓0(003)
留言3則, 2人參與, 7年前最新討論串1/1
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) clang、gcc 問題(Question): 有 class A、class B、function foo B 是 A 的 friend foo 是 B 的 friend 把 foo 的定義寫在 class B 裡面 用 clang 編譯可以在 foo 裡面存取 A 的私有成員,gcc 則不行 B 的 member function bar 可以存取 A 的私有成員,是因為 bar 屬於 B B 的 friend function 不屬於 B,不過定義寫在 B 裡面,那是屬於 B 還是不屬於 B? 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) https://gcc.godbolt.org/z/9aNGEX -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.210.55 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1550040915.A.F19.html

02/13 15:25, 7年前 , 1F
定義在 B 裡只會讓 foo inline, 不會讓 foo 屬於 B
02/13 15:25, 1F

02/13 15:25, 7年前 , 2F
感覺是 Clang 的 bug...?
02/13 15:25, 2F

02/13 15:26, 7年前 , 3F
不屬於
02/13 15:26, 3F
剛剛找了找 bugs.llvm.org,發現跟 Bug 11515應該是同一類型的,看來的確是 clang 的 bug https://bugs.llvm.org/show_bug.cgi?id=11515 ※ 編輯: Lipraxde (140.113.56.71), 02/13/2019 20:37:46
文章代碼(AID): #1SOxzJyP (C_and_CPP)
文章代碼(AID): #1SOxzJyP (C_and_CPP)