+++ /dev/null
-// Build don't link:
-
-// Copyright (C) 1999 Free Software Foundation
-
-// by Alexandre Oliva <oliva@dcc.unicamp.br>
-
-template <typename T> void foo(T);
-template <typename T> void foo(T*);
-
-template <typename T> class bar {
- private:
- int i; // ERROR - this variable
- friend void foo<T>(T);
-};
-
-template <typename T> void foo(T) {
- bar<T>().i = 0; // ok, I'm a friend
-}
-template <typename T> void foo(T*) {
- bar<T*>().i = 1; // ERROR - not a friend
-}
-
-int main() {
- int j = 0;
- foo(j); // calls foo<int>(int), ok
- foo(&j); // calls foo<int>(int*) // ERROR - not a friend
- foo<int*>(&j); // calls foo<int*>(int*), ok
-}