零初始化类型
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){};
给定一个无符号整数类型的变量: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){};