阅读背景:

在不调用initializer_list构造函数的情况下,将不可复制的、不可移动的类型构造为函数参数

来源:互联网 
#include <initializer_list>
#include <iostream>

namespace {

class C {
public:
    C(C const &) = delete;
    C(C &&) = delete;
    C(int) {
        std::cout << "int\n";
    }
    C(std::initializer_list<int>) {
        std::cout << "initializer\n";
    }
};

void f(C) {
}

// Compiles and prints "initializer" when called
C g() { return {0}; }
// Fails to compile
// C h() { return 0; }

}   // namespace

int main() {
    // Compiles and prints "initializer"
    f({0});
    // Fails to compile
    // f(0);
}
#include <initializer_list>
#include <iostream>



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: