我正在处理C++中的union,我希望有一个函数模板,它可以根据模板参数访问活动的union成员.
代码就像(doSomething只是一个例子):
union Union {
int16_t i16;
int32_t i32;
};
enum class ActiveMember {
I16
, I32
}
template <ActiveMember M>
void doSomething(Union a, const Union b) {
selectMemeber(a, M) = selectMember(b, M);
// this would be exactly (not equivalent) the same
// that a.X = b.X depending on T.
}
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我只发现了一些糟糕的黑客攻击,比如专业化,或者是一种不同类的访问和分配方式.
我错过了什么,这样的事情应该用其他方法来做?
我正在使用 vimwiki,它允许您编写诸如[[wiki link ...|name link]]. 如果您处于编辑模式并且位于带有链接的行中,那么您会看到真实的文件内容,否则您只会看到“名称链接”。(与 vim 帮助 |链接| 类似)。
但是 vim 为了计算换行,使用的是真实内容而不是显示的内容。
我想让 vim 使用显示的字符来计算换行。