2

重複の可能性:
C ++:テンプレートパラメーターとしてfloat値を使用できないのはなぜですか?

テンプレートクラスを定義できます:

template <int A> C {};

しかし、次のようなクラスを定義することはできません。

template <float A> C{};

私は次の表現で考えます:

const float a = 10.0f;

aはconstexperisionであり、これを使用して、floatnoneタイプのテンプレートパラメーターをインスタンス化できます。

C<a> c();

しかし残念ながら、それは違法です。なんで?

4

1 に答える 1

2

これが標準で許可されていない理由として考えられるのは、すべてのフロートが正確に表現できるわけではないため、フロートとして扱うと、同一のテンプレートパラメータが異なって見える可能性があることです。たとえば、

C<1.0f/3.0f> c;

C<2.0f/6.0f> c;

同じタイプですか?

于 2012-07-17T08:20:31.773 に答える