我注册是因为我一直在谷歌上搜索这个问题的答案,但找不到。
我想知道 MIPS 中是否严格需要没有链接的跳转指令?
例如,我可以想象,在不需要时使用“AL”版本会导致一些功率损失,但是有没有任何情况(这不是完全人为设计的或者可以相对简单地编码)只有 J/JR 可以工作?
谢谢!
我正在寻找一种优雅的方法(由最少的重复代码定义)以重载运算符以执行以下操作:
我有一个BaseSignal重载+=运算符的模板类,并且我希望能够接受许多不同的类型。例如,对于double,代码看起来像
template <class T>
class BaseSignal
{
public:
....
// Self-increment
BaseSignal<T>& operator+=(const double& rhs)
{
T rval;
this->Get(&rval);
this->Set(rval + static_cast<T>(rhs));
return *this;
}
....
Run Code Online (Sandbox Code Playgroud)
我一直在对int,long等重复这段代码。由于该值rhs仅在line中使用static_cast<T>(rhs),所以我在重复代码的同时仅更改输入参数的类型。
所以我可以模板化,例如
template <class T, class U>
class BaseSignal
{
public:
....
// Self-increment
BaseSignal<T>& operator+=(const U& rhs)
{
T rval;
this->Get(&rval);
this->Set(rval + static_cast<T>(rhs));
return *this;
}
....
Run Code Online (Sandbox Code Playgroud)
但是,这似乎使我失去了“重载”方面,因为编译器将自动为我选择正确的方法(它也仅适用U于实例化的原始类型)。
我意识到我正在尝试使用C ++实现某些非类型化的语言行为,这可能不是最聪明的事情,我只是想向一些常用的类中添加一些智能,以使后续代码变得更容易编写。
先感谢您。