c++ - 零初始化类型

标签 c++ default-constructor decltype temporary declval

给定一个无符号整数类型的变量:foo 假设我想这样做:

const decltype<foo> bar{};

cout << (55834574890LL & ~bar) << endl;

这给了我预期的 42。但现在假设我想取消 bar 变量。所以像这样:

cout << (55834574890LL & ~decltype<foo>{}) << endl;

但我只是得到一个错误:

error: expected primary-expression before decltype

我也试过 declval 但它返回一个引用,这也不好。我有办法做到这一点吗?

最佳答案

你应该使用圆括号:

auto v = 55834574890LL & ~decltype(foo){};

Here's a demo.

关于c++ - 零初始化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651124/

相关文章:

c++ - 创建临时的 decltype

c++ - 指针和指向引用的指针

C++ 动态分配的 std::vector

c++ - OpenGL 模型加载器问题

c++11 - std::array 的默认初始化?

c++ - 使用私有(private)成员变量的返回类型推导

c++ - last_insert_id 的返回总是正确的吗?

c++ - 类不存在默认构造函数,但我已经声明了一个

c++ - 无需默认构造函数即可插入或更新到 unordered_map

c++ - 原型(prototype)与 decltype 和 auto 不匹配