相关疑难解决方法(0)

std :: function不是gcc中的MoveConstructible函数对象

我想要相处std::function.从这里引用可以看出,对std::functionctor的论证应该是可调用的并且可以复制构造.所以这是一个小例子:

#include <iostream>
#include <type_traits>
#include <functional>

class A {
public:
    A(int a = 0): a_(a) {}
    A(const A& rhs): a_(rhs.a_) {}
    A(A&& rhs) = delete;
    void operator() ()
    {
        std::cout << a_ << std::endl;
    }

private:
    int a_;
};

typedef std::function<void()> Function;

int main(int argc, char *argv[])
{
    std::cout << std::boolalpha;
    std::cout << "Copy constructible: "
              << std::is_copy_constructible<A>::value << std::endl;
    std::cout << "Move constructible: "
              << std::is_move_constructible<A>::value << std::endl;
    //Function f = A(); …
Run Code Online (Sandbox Code Playgroud)

c++ gcc c++11

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

BST中的C++ 11神奇删除的构造函数

解决了!见下文

所以,我正在尝试通过做一些简单的数据结构并使用它们来学习C++ 11.我使用原始指针做了类似于以下BST示例的操作new,delete并且它工作正常.然后我想以更加泄密的方式做到这一点.

// tree.cpp
// 
// 

#include <iostream>
#include <memory>

/* DECLARATIONS */
template <typename T>
struct Tree {
  // members
  T data;
  std::unique_ptr<Tree<T> > left;
  std::unique_ptr<Tree<T> > right;
  // methods
  Tree (T arg);
  ~Tree () = default;
  void insert (Tree<T> child);
  void insert (T arg);
  void print (void);
};

template <typename T>
Tree<T>::Tree (T arg) {
  data = arg;
  left = nullptr;
  right = nullptr;
}

template <typename T>
void Tree<T>::insert …
Run Code Online (Sandbox Code Playgroud)

c++ constructor c++11

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

标签 统计

c++ ×2

c++11 ×2

constructor ×1

gcc ×1