#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) 我听说费用std::function比auto处理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)