mercredi 7 novembre 2018

Can't define std::function variable from the virtual method pointer in vs2013

In my project I am trying to define std::function variable from the virtual method pointer:

#include <functional>
class VirtualClass
{
public:
  virtual void foo(int x) = 0;
};

class DerivedClass : public VirtualClass
{
public:
  virtual void foo(int x) override
  {
    // I am foo from DerivedClass;
  }
};

int main()
{
  DerivedClass derivedClass;
  std::function<void(VirtualClass&, int)> fooFunc = &VirtualClass::foo; //doesn't compile
  fooFunc(derivedClass, 0);
  return 0;
}

This code is compiling in visual studio 2017, but doesn't compile in visual studio 2013. Is it possible to fix a compilation error in vs 2013 without switching to pure pointers and keep using std::function?

Aucun commentaire:

Enregistrer un commentaire