0
4

2 に答える 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 に答える