小编Dan*_*anu的帖子

模板推断与智能指针

我的代码看起来像这样:

#include <iostream>
#include <memory>

using namespace std;

class myClass
{
    int a;
};

template <typename T, template<typename ValueType> class SmartPtr> // (1)
void myFunction(const void *pointer, SmartPtr<T>& pointer2)
{
    cout<<"with template"<<endl;
}

void myFunction(const void *pointer, unique_ptr<myClass>& pointer2)
{
    cout<<"without template "<< *(static_cast<const int*>(pointer))<<endl;
}

int main()
{
    int* a = new int(5);
    unique_ptr<myClass> myUniquePtr(new myClass);
    shared_ptr<myClass> mySharedPtr(new myClass);

    myFunction(static_cast<const void*>(a), myUniquePtr); // (2)
    myFunction<int, unique_ptr<myClass> >(static_cast<const void*>(a), myUniquePtr); // (3)
    myFunction<int, shared_ptr<myClass> >(static_cast<const void*>(a), mySharedPtr); // (4)

    delete …
Run Code Online (Sandbox Code Playgroud)

c++ templates pointers

3
推荐指数
1
解决办法
1411
查看次数

标签 统计

c++ ×1

pointers ×1

templates ×1