小编Dan*_*Lee的帖子

使用具有两个或多个参数的类初始化 std::tuple

#include <iostream>

class NoCopyMove {
public:
    NoCopyMove(int a) : a_(a), b_(a) {}
    NoCopyMove(int a, int b) : a_(a), b_(b) {}

    NoCopyMove(const NoCopyMove&) = delete;
    NoCopyMove& operator=(const NoCopyMove&) = delete;
    NoCopyMove(NoCopyMove&&) = delete;
    NoCopyMove& operator=(NoCopyMove&&) = delete;

    int a_;
    int b_;
};

int main()
{
    std::tuple<NoCopyMove, NoCopyMove> t {6, 9};
    std::cout << std::get<0>(t).a_ << std::endl;   
    std::tuple<NoCopyMove, NoCopyMove> t2 {{6, 7}, {8, 9}};
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个具有两个以上参数作为构造函数的类元组。如果只有一个构造函数参数,它就可以工作。

main.cpp:45:28: error: no matching constructor for initialization of 'std::tuple<NoCopyMove>'
    std::tuple<NoCopyMove> t2 {{6, 7}, {8, 9}}}; …
Run Code Online (Sandbox Code Playgroud)

c++ stdtuple c++14

11
推荐指数
2
解决办法
904
查看次数

是std :: function比自动存储lambda函数更重要

我听说费用std::functionauto处理lambda函数要重.有效的现代c ++ item5.我想要的是澄清为什么std::function使用更多内存而不是auto一些示例代码的机制.有人能帮帮我吗?

编辑

class Widget {
public:
  Widget(int i) : i_(i) {}
  bool operator<(const Widget& o) { return o.value() > i_; }
  int value() const { return i_; };
private:
  int i_;
  int dummy_[1024];
};

int main() {
  // performance difference between auto and std::function
  { 
    auto less1 = [](const auto& p1, const auto& p2) {
      return *p1 < *p2;
    };
    std::cout << "size of less1: " << sizeof(less1) << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ lambda auto c++11 std-function

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

标签 统计

c++ ×2

auto ×1

c++11 ×1

c++14 ×1

lambda ×1

std-function ×1

stdtuple ×1