I am having problems using this declaration.
object1.function1<Object2, void (Object2::*)()>(object2, &Object2::function2)
This is what the compiler tells me.
error LNK2001: unresolved external symbol "public: void __cdecl Object1::function1<class Object2,void (__cdecl Object2::*)(void)>(class Object2 &,void (__cdecl Object2::*)(void))" (??$function1@VObject2@@P81@EAA_NXZ@Object1@@QEAA_NAEAVObject2@@P81@EAA_NXZ@Z)
Here the struct of the code:
class Object1{
public:
    template <typename O, typename F>
    void function1(O& object, F function){
        object.function();
    }
};
class Object2{
public:
    void function2(){
        std::cout << "Doing something..." << std::endl;
    };
};
class Object3 {
private:
    Object1 object1;
    Object2 object2;
    void function3() {
        object1.function1<Object2, void (Object2::*)()>(object2, &Object2::function2);
    };
};
I can not see the error. Someone could help me?
 
    