пытаюсь в проекте объявить дружественную функцию-шаблон в шаблоне класса. Всё время выходит какая-нибудь ерунда. Вот пример:
template<class Tn> class A
{
private:
void someF(){};
};
template<class Tn> class B: private A<Tn>
{
};
template<class Tn> class C: public B<Tn>
{
public:
void Do(C<Tn> &a) {};
friend void F(C<Tn> &a, C<Tn> &b);
void start(void){};
};
template<class Tn> void F(C<int> &a,C<int> &b)
{
a.Do(b);
b.Do(a);
a.someF();
b.someF();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormActivate(TObject *Sender)
{
C<int> SOMEclassX,SOMEclassY;
SOMEclassX.start();
F(SOMEclassX,SOMEclassY);
}
в результате получаю сообщение Exception handle variable may not be used here на строке
F(SOMEclassX,SOMEclassY);
Подскажите, что я делаю не так?