相关疑难解决方法(0)

C++ 1y/C++ 14:在常量表达式中不允许在其生命周期之外赋值给对象吗?

根据当前的草案,以下C++ 14/C++ 1y程序是否格式错误?

#include <cstddef>

template<typename T, size_t n>
struct literal_array
{
    T data[n];
};

template<typename T, size_t n, size_t m>
constexpr literal_array<T, n+m> operator+(literal_array<T, n> a,
                                          literal_array<T, m> b)
{
    literal_array<T, n+m> x;

    for (size_t i = 0; i < n; i++)
        x.data[i] = a.data[i];

    for (size_t i = 0; i < m; i++)
        x.data[n+i] = b.data[i];

    return x;
}

int main()
{
    constexpr literal_array<int, 3> a = { 1, 2, 3 };
    constexpr literal_array<int, 2> b = { …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer constexpr c++14

16
推荐指数
1
解决办法
1779
查看次数

标签 统计

c++ ×1

c++14 ×1

constexpr ×1

language-lawyer ×1