Я не могу скомпилировать свою программу с VS2015 из-за функции, использующей шаблонный параметр и наследование.
Ошибка эта .
Я пытаюсь добиться следующего:
class A
{
//do something
};
class B : public A
{
//do something
};
template <typename T>
class Foo {
template <typename T>
friend void function(Foo<T> & sm) {
//do something
}
};
void main()
{
Foo<A> test;
Foo<B> test2;
};
Я понимаю значение ошибки, но не понимаю, почему это происходит на самом деле.
Полагаю, function
создается с двумя разными сигнатурами:
void function(Foo<A> & sm);
и
void function(Foo<B> & sm);
Какое это мультиопределение?
EDIT - полное сообщение об ошибке:
Error C2995 'void function(Foo<T> &)': function template has already been defined
EDIT² - С нуля