相关疑难解决方法(0)

constexpr初始化数组以排序内容

这是一个难题而不是现实世界的问题,但我已经陷入了一种情况,我希望能够写出一些行为完全像

template<int N>
struct SortMyElements {
    int data[N];

    template<typename... TT>
    SortMyElements(TT... tt) : data{ tt... }
    {
        std::sort(data, data+N);
    }
};

int main() {
    SortMyElements<5> se(1,4,2,5,3);
    int se_reference[5] = {1,2,3,4,5};
    assert(memcmp(se.data, se_reference, sizeof se.data) == 0);
}
Run Code Online (Sandbox Code Playgroud)

除了我想要SortMyElements构造函数constexpr.

显然这可能是固定的N; 例如,我可以专攻

template<>
struct SortMyElements<1> {
    int data[1];
    constexpr SortMyElements(int x) : data{ x } {}
};


template<>
struct SortMyElements<2> {
    int data[2];
    constexpr SortMyElements(int x, int y) : data{ x>y?y:x, x>y?x:y } {}
};
Run Code Online (Sandbox Code Playgroud)

但是,我如何将其概括为适用于 …

c++ template-meta-programming constexpr c++11

8
推荐指数
4
解决办法
2864
查看次数

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

template-meta-programming ×1