小编Sam*_*iel的帖子

设置为std :: function的目标将丢失

我为std :: function设置的目标丢失了,我不知道为什么我可能忽略了这个程序中的一些小错误.有人可以帮忙吗

class Test将lambda注册到单例类,但是当尝试调用回调时,std :: function中的目标集将丢失.

#include <iostream>
#include <functional>

using namespace std;

class callback_store final
{

    using callback_func_type = std::function<void()>;

    public:
    static callback_store instance()
    {
        static callback_store instance;
        return instance;
    }

    void register_callback(callback_func_type func)
    {
        std::cout << "register_callback() <<<" << std::endl;
        m_func = func;

        // I am able to call the targets from here.
        std::cout << "register_callback() func() " <<  std::endl;
        func();
        std::cout << "register_callback() m_func() "  << std::endl;
        m_func();

        // some stats
        std::cout << "register_callback() :: " …
Run Code Online (Sandbox Code Playgroud)

c++ lambda callable c++11 std-function

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

转发参数包到构造函数()在g ++ 6.2.1中失败

如何在g ++ - 6.2.1中克服/解决此错误

以下代码适用于g ++ - 7.3.0,但升级编译器对我来说不是一个选项.所以我正在寻找一些SFINAE魔法......尝试很少但到目前为止失败了......

class Base {
public:
  Base(std::string str) : s(std::make_shared<std::string>(str)) {}
  Base(Base &&base) noexcept { s = std::move(base.s); }
  Base &operator=(Base &&i_base_actor) noexcept {
      s = std::move(i_base_actor.s);
      return *this;
  }
  virtual ~Base() = default;

private:
  std::shared_ptr<std::string> s;
};

// Derived
class Derived : public Base {
public:
   Derived() :Base("Derived") {}
   ~Derived() = default;
};

// Derived1
class Derived1 : public Base {
public:
   Derived1(int a) :Base("Derived1") {}
   ~Derived1() = default;
};
Run Code Online (Sandbox Code Playgroud)

包装功能:

template<typename T, …
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics variadic-templates perfect-forwarding c++17

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