零初始化类型

时间:2018-06-01 21:20:48

标签: c++ default-constructor decltype temporary declval

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

const decltype<foo> bar{};

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

这给了我预期的42.但现在让我们说我想取消bar变量。所以像这样:

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

但我得到一个错误:

  

错误:decltype之前预期的primary-expression

我也试过declval,但是返回了一个引用,这也没有用。有没有办法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

你应该使用圆括号:

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

Here's a demo.