0
template <int T> struct int2type{};
template<int I>
void func(int2type<I>)
{
printf("int_val: %i\n", I);
}
int main(int argc, char *argv[])
{
func(int2type<10>());
}
を理解することはできません私は、テンプレートとタイプ控除がどのように動作するかのいくつかの基本的な考え方を持っている、しかし、私はこのコードを理解することはできません。 I
の背後にある魔法は何ですか?我々が知っている方法I
からint2type
インスタンスがfunc
に渡されましたか?はそれが10</p> <p>を印刷します。もちろん、C++ 11テンプレート関数のパラメータ控除
私はこれについて魔法を感じることはありません。コンパイラは、 'I'のために引数が' int2type 'となることを期待しています。 'int2type <10>'型の引数を渡します。コンパイラはそれらを比較し、2つの型が同一であるためには「I」が「10」でなければならないことを知る。 – Brian
ああそう!今私はそれがどのように動作するかを見ます。ありがとうございました! – sigmaN