零初始化类型

Zero Initialize a Type

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

const decltype<foo> bar{};

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

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

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

但是我得到一个错误:

error: expected primary-expression before decltype

我也试过declval,但是那个returns一个参考,也是不行的。我有办法做到这一点吗?

你应该使用圆括号:

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

Here's a demo.