【发布时间】:2013-10-14 15:43:57
【问题描述】:
考虑以下程序:
int main ()
{
const int e = 10;
for (decltype(e) i{0}; i < e; ++i) {
// do something
}
}
使用 clang(以及 gcc)编译失败:
decltype.cpp:5:35: error: read-only variable is not assignable
for (decltype(e) i{0}; i < e; ++i) {
^ ~
基本上,编译器假设i 必须是const,因为e 是。
有没有办法我可以使用decltype 来获取e 的类型,但删除const 说明符?
【问题讨论】:
-
@KerrekSB auto 在这里也不起作用。无论
e是否为int,它都会给我一个int。 -
for (auto end = e, i = 0; i != end; ++i)... -
@KerrekSB 如果
e不是int,我得到inconsistent deduction for ‘auto’。 -
@KerrekSB 这不一定有效,因为在“逗号分隔的自动声明”中推导出的所有类型都必须相同。
-
@ChristianRau:
auto end = e, i {}呢?