【发布时间】:2013-09-05 12:10:00
【问题描述】:
我有代码 C++11:
template<std::size_t n>
static inline constexpr uint32_t mask() noexcept
{
static_assert(n <= 32, "!");
using list = uint32_t[];
return list{
0x0u,
0x1u, 0x3u, 0x7, 0xfu, 0x1fu, 0x3fu, 0x7fu, 0xffu,
0x1ffu, 0x3ffu, 0x7ffu, 0xfffu, 0x1fffu, 0x3fffu, 0x7fffu, 0xffffu,
0x1ffffu, 0x3ffffu, 0x7ffffu, 0xfffffu, 0x1fffffu, 0x3fffffu, 0x7fffffu, 0xffffffu,
0x1ffffffu, 0x3ffffffu, 0x7ffffffu, 0xfffffffu, 0x1fffffffu, 0x3fffffffu, 0x7fffffffu, 0xffffffffu
} [ n ];
}
问:list 数组存储在哪里? (在静态内存、自动内存或无存储位置)?
【问题讨论】:
-
这是一个你应该问你的编译器的问题,而不是我们。但是,为什么要存储它?
-
它可能会被完全优化,并且值会被内联。