这是一个难题而不是现实世界的问题,但我已经陷入了一种情况,我希望能够写出一些行为完全像
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)
但是,我如何将其概括为适用于 …