2

可能重复:
C++:为什么我不能使用浮点值作为模板参数?

我可以定义一个模板类:

template <int A> C {};

但我不能定义一个类:

template <float A> C{};

我认为在表达式中:

const float a = 10.0f;

a是一个 const experision,我可以用它来实例化一个浮点非类型模板参数

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 回答