質問する
3542 次
2 に答える
3
再帰的なテンプレートテンプレートアプローチを使用できます。
template<int base, unsigned int exp>
struct Pow {
enum { value = base * power<base, exp-1>::value };
};
// stopping condition
template<int base>
struct Pow<base,0> {
enum { value = 1 };
};
次のように使用します。
int i = Pow<10,2>::value;
于 2012-06-08T18:05:04.610 に答える
3
マクロ機能を使用することは、この仕事には不適切なツールです。それにもかかわらず、あなたはそれが式内で機能すると思うと言います。プリプロセッサが作業を行った後、実際のコンパイラがどのように見えるかを検討してください。
int result = int c=2; for (int ii=0; ii<(10)-1; (c)*=(2), i++); c
どんなに頑張ってもfor
、式の中で変数の定義やループを行うことはできません。
于 2012-06-08T17:47:10.550 に答える