[C++] funkcja wzorcowa + friend

0

Jak się deklaruje ogólną wzorcową zaprzyjaźnioną funkcję? Przy takiej deklaracji DevCpp nie wyświetla jakiś błąd:

template <class T>
class Array {
   //coś tam
   friend void nazwa_funkcji();   //tu kompilator wyświetla błąd
};
template <class T>
void nazwa_funkcji()
{
   //implementacja
}
0

raczej takiej przyjaznie nie da rady zrobic...

bo dales przyjazn ze zwykla funkcja a nie z szablonowa...

0

a jak się daje z szablonową (jakąkolwiek)?

0

albo inaczej
mając taką klasę:

template<class T>
class Array
{
//
};

jak przeciążyć operator << (dla każdego typu)?

0

W czym problem?

template<class T>
class Array
{
T& operator<<(unsigned);
T& operator<<(double);
};
0

ale operator << zwraca obiekt ostream

0

Dla ścisłości, zwraca to co mu każesz zwracac ;) Kwestia wygody jest zwracać referencje do strumienia który mu wysłano
ostream& operator<<(ostream& strumien, argumenty);

0

wg. standardu przynajmniej czesciowo mozna deklarowac template-friends (a i pewnie mozna w 100% :) )
http://www.parashift.com/c++-faq-lite/templates.html
w rozdziale 35.16 jest pare przykladow template friendow o tym samym T co klasa deklarujaca.

z kolei na (ms visual!!) http://msdn.microsoft.com/en-us/library/f1b2td24.aspx jest wyraznie napisane i sa podane przyklady, dokladnie takie jak autor chcial uzyskac, na samym dole klasy Array<>

1 użytkowników online, w tym zalogowanych: 0, gości: 1