我再次摆弄模板元编程并试图更好地理解它。我创建了以下简单的模板元函数。
template<typename T, T Value>
struct is_positive
{
static const bool value = (Value >= 0);
}
const bool is_positive_test_1 = is_positive<int32_t, 3>::value; //true
const bool is_positive_test_2 = is_positive<int32_t, 0>::value; //true
const bool is_positive_test_3 = is_positive<int32_t, -1>::value; //false
一切正常,正如预期的那样,但我想知道是否有一种方法可以消除指定Value
参数类型的需要,因此调用约定将改为:
is_positive<1>::value
先感谢您。:)
编辑
我希望这不仅适用于int32_t
,而且适用于float32_t
任何其他数字类型。例如,我想is_positive<3.141f>::value
在不需要专门化模板的情况下有效。