Этот код дает мне ошибку в VS2015 обновления 1:не может вызывать зЬй :: функцию
ошибка C2893: Не удалось специализировать шаблон функции «Неизвестная-типа зЬй :: Invoke (_Callable & &, _Types & & ...)»
#include <iostream>
#include <functional>
using std::cout;
class A
{
public:
virtual void init()
{
cout << "A";
};
};
class B
{
public:
virtual void init()
{
cout << "B";
};
};
class C : private A, private B
{
std::function<void()> a_init = &A::init;
std::function<void()> b_init = &B::init;
public:
void call()
{
a_init();
b_init();
}
};
int main()
{
C c;
c.call();
return 0;
}
Любые идеи, если это VS компилятор глючит или мой код?
EDIT
#include "stdafx.h"
#include <functional>
class A
{
public:
virtual void inita()
{
cout << "A";
};
};
class B
{
public:
virtual void initb()
{
cout << "B";
};
};
class C : private virtual A, private virtual B
{
/*std::function<void()> a_init = &A::init;
std::function<void()> b_init = &B::init;*/
public:
void call()
{
inita();
}
};
Это ваш код. Как вы ожидаете называть '& A :: init'? –
@KerrekSB, вызывая его с помощью()? –
@Thereisnothingwecando В каком экземпляре 'A'? – TartanLlama