C++ constness它不会为依赖类型传播
为什么会这样C++ constness它不会为依赖类型传播,c++,c++14,c++17,C++,C++14,C++17,为什么会这样 struct A { int a }; using B = const A; // or typedef const A B; decltype(B::a)的计算结果为int,而不是const int。 在生命中,如何学习C++的哪一章是我丢失的? < p>假设您是“代码> DECKET(B::A)< /代码>,我不明白为什么您期望它返回 const int < < /P> decltype(x)大致给出了“typex声明为”,在本例中为int 下面是一个有趣的例子
struct A { int a };
using B = const A; // or typedef const A B;
decltype(B::a)
的计算结果为int
,而不是const int
。
在生命中,如何学习C++的哪一章是我丢失的? < p>假设您是“代码> DECKET(B::A)< /代码>,我不明白为什么您期望它返回
decltype(x)
大致给出了“typex
声明为”,在本例中为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)
}
intmain()
{
bx{};
静态断言(std::is_same_v);/(0)
静态断言(std::is_same_v);/(1)
}
(0)告诉您声明的x.a
类型确实是int
,即使x
是const
(1)告诉您x.a
的值类别是一个左值,正好是const
(请注意
decltype
)您的意思是decltype(B::a)
?是的,更正了!我希望返回const int
,因为我假设const限定符也被考虑在内?陛下