小编Yur*_*kin的帖子

非类型参数取决于它之后的参数

我正在编写一个模板化的类,它封装了win32处理RAII.这是我到目前为止所得到的:

#define NOMINMAX
#include <Windows.h>
#include <functional>

// problem: optionally pass additional params to the deleter function
template<typename ResourceT, std::function<void(ResourceT)> &Deleter>
class Win32Raii 
{
   Win32Raii(const Win32Raii &);
   Win32Raii &operator=(const Win32Raii &);

public:
   Win32Raii()
      : m_resource(nullptr)
   {}

   Win32Raii(const ResourceT &r)
      : m_resource(r)
   {}

   Win32Raii(Win32Raii &&other)
      : m_resource(nullptr)
   {
      *this = std::move(other);
   }

   ~Win32Raii()
   {
      if (m_resource)
      {
         Deleter(m_resource);
      }
   }

   Win32Raii &operator=(Win32Raii &&other)
   {
      std::swap(m_resource, other.m_resource);

      return *this;
   }

   ResourceT get() const { return m_resource; }

private:
   ResourceT m_resource;
};

// …
Run Code Online (Sandbox Code Playgroud)

c++ winapi raii variadic-templates c++11

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

标签 统计

c++ ×1

c++11 ×1

raii ×1

variadic-templates ×1

winapi ×1