假设我编写以下代码:
template<typename T1, typename T2>
struct dummy {
T1 first;
T2 second;
};
我想知道如何通过降序来命令模板类中的成员。换句话说,我希望上面的课程是
struct dummy {
int first;
char second;
};
实例化为dummy<int, char>
时。但是,我想获得
struct dummy {
int second;
char first;
};
在案例dummy<char, int>
。
答案 0 :(得分:0)
在大多数平台上,std::pair
的填充仅在“自然”对齐时发生。对于任何一种订单,这种填充都会相同。
对于std::tuple
,某些安排可能比其他安排更有效,但是库可以选择它喜欢的任何内存布局,因此您添加的任何TMP都只是猜测。
一般来说,是的,您可以使用模板定义排序算法,但这将是一项相当有用的工作。
答案 1 :(得分:0)
这可以做到,唯一的问题是命名,你如何命名你的领域?
我做了你不久前提出的问题,我使用了std::tuple
和一些元编程技巧,我做了一个合并排序来重新排序模板参数,这很有趣(如果你喜欢函数编程) )。
对于命名,我使用了一些宏来访问字段。
我真的很鼓励你自己做,理智上真的很有趣,但如果你想看一些代码,请告诉我!