我试图将int8_t的引用转换为uint8_t的引用。
我有以下代码:
如何正确地做到这一点?
我有以下代码:
inline mtype& operator&(mtype& mt, uint8_t& va) {
// do something
// ...
return mt;
}
inline mtype& operator&(mtype& mt, int8_t& va) {
// do the same but signed
// ...
return mt;
}
由于两个重载函数的功能相同,我想要dry(或更好的DRM),因此我想使用转换后的va
调用第一个运算符。但是我该怎么做?这样行不通。
inline mtype& operator&(mtype& mt, int8_t& va) {
return mt& static_cast<uint8_t>(va); // error: no match for 'operator&' in 'mt & (uint8_t)va'
}
如何正确地做到这一点?
char
类型,那么reinterpret_cast
将违反严格别名规则。 - Mark B