我有Opers
一些算术运算的结构:mult()
, div()
, mod()
.
而且我需要专门针对n
. 这是Opers<1>
.
但是,我还想专门n
化 2 的幂(n = 2,4,8,16, ...)——在这种情况下,我可以优化操作mult()
和div()
(使用按位左移或右移)。
#include <iostream>
using namespace std;
template<int n> struct Opers {
int mult(int x){
return n*x;
}
int div(int x){
return x / n;
}
int mod(int x){
return x % n;
}
};
template<> struct Opers<1> {
int mult(int x){
return 1;
}
int div(int x){
return x;
}
int mod(int x){
return 0;
}
};
int main() {
Opers<1> el2;
cout << el2.mult(3) <<endl;
}
我正在寻找像这样的建筑
template<> struct Opers<isPowerOfTwo()>
int mult(int x){
// do smth
}
有可能还是我应该阅读什么手册?
UPD。允许使用 C++11,甚至会更好。