为什么这样呢?
struct A { int a };
using B = const A; // or typedef const A B;
Run Code Online (Sandbox Code Playgroud)
decltype(B::a)评估int与否const int.我错过了如何在一生中学习C++的哪一章?
假设你的意思decltype(B::a),我不明白为什么你期望它回来const int.
decltype(x)粗略地给你"类型x被声明为",在这种情况下是int.
这是一个有趣的例子:
int main()
{
B x{};
static_assert(std::is_same_v<decltype(x.a), int>); // (0)
static_assert(std::is_same_v<decltype((x.a)), const int&>); // (1)
}
Run Code Online (Sandbox Code Playgroud)
(0)告诉你声明的类型x.a确实是int,即使x是const.
(1)告诉你值的类别x.a是左值,恰好是const.
(注意,decltype 括号表达式的行为不同.)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |