C++ 泛型唯一指针

C++ 泛型唯一指针,c++,C++,下面是我的示例代码: #include <functional> #include <iostream> #include <memory> using namespace std::placeholders; template <typename recvtype, typename responsetype> void myfunc(std::unique_ptr<recvtype> input, std::function<

下面是我的示例代码:

#include <functional>
#include <iostream>
#include <memory>
using namespace std::placeholders;

template <typename recvtype, typename responsetype>
void myfunc(std::unique_ptr<recvtype> input, std::function<void(std::unique_ptr<responsetype>)> callback)
{
        auto msg = std::make_unique<responsetype>();
        callback(std::move(msg));
    return;
}

class Ret
{
public:
Ret(){}
void BRet(std::unique_ptr<Ret> r)
{
std::cout << "Called Me!!!" << std::endl << std::fflush;
}

};

class In
{
public:
In(){}
};

void test(std::unique_ptr<In> input, std::function<void(std::unique_ptr<Ret>)> callback)
{
myfunc<In , Ret>(std::move(input), callback);
}

int main()
{
std::unique_ptr<In> a = std::make_unique<In>();
Ret r1;
std::function<void(std::unique_ptr<Ret>)> f = std::bind(&Ret::BRet, &r1, _1);
test(std::move(a),f);
}

我不确定控制台上打印的'1'是从哪里来的,我如何才能让测试接受通用唯一指针-我的意思是,现在可以为任何类型调用测试方法,而不是'In和Ret'类型?

1
来自以下行:

std::cout << "Called Me!!!" << std::endl << std::fflush;

谢谢这解决了我问题的第一部分-请让我知道如何使测试方法接受通用唯一指针-这意味着我现在可以将任何类型传递给method@Programmer你可能应该把它分成它自己的问题。有两个像这样不相关的问题真的会让你的问题变得更广泛。每个问题请回答一个问题。抱歉,同样的问题,但我最初确实要求在我的问题正文中提供这些信息-我现在应该创建一个新的帖子吗?
std::cout << "Called Me!!!" << std::endl << std::fflush;
std::cout << "Called Me!!!\n";