【发布时间】:2013-08-21 17:53:00
【问题描述】:
我想为不同类型的数字(整数、浮点数)创建验证器,例如:
typename number_validator<T>::type validator;
我在std 即is_integral 和is_floating_point 中发现了有用的特征。如何使用这些特征来专门化模板 number_validator(它是 struct)?
编辑: 我正在寻找这样的东西:
template<typename T, typename Enabled>
struct number_validator {};
template<typename T>
struct number_validator<T, typename enable_if<is_floating_point<T>::value, T>::type>
//this doesn't work..
{
typedef floating_point_validator type;
};
【问题讨论】:
-
你的“验证者”是做什么的?
-
它将验证数字。我会将
::type准备为具有公共接口(但不是子类)的某些特定类的类型定义 -
我要问的是,你想如何验证这些数字?当然还有比这更简单的方法。
-
可能,但我有点在玩模板;)
-
@Kiel 我的错,稍加修正就可以了。 Here。注意主模板中第二个参数的默认值以及
enable_if的第二个模板参数的缺失。
标签: c++ templates c++11 sfinae