这是我自己试着写的代码
#include <iostream>
struct A
{
A(){};
virtual void test()=0;
};
struct B: A
{
B(int i){};
void test(){};
};
struct C: A
{
C(double d){};
void test(){};
};
template<class F, class... Args>
inline F* make(Args&&... a)
{
return new F(a);
}
int main()
{
B* b = new B(2);
auto c = std::make_shared<A>(b);//为什么报错
A* a = make<B>(2);//想要实现这种效果
return 0;
}