在处理模板化类的不需要的数据类型时,什么是“良好实践”?
假设我们在模板化类中有一个函数进行数字乘法运算,但该类的驱动程序文件声明了类型为string
的类的实例。
我已经得到了这样的论点:对于创建驱动程序文件的人来说,这是一个“个人问题”,并且您需要完成的所有事情都是在头文件/实现文件中正确的函数序言。
我想知道是否有关于此问题的模板使用的一般做法。你在处理它们之前检查你的类型(我猜,在某种程度上违背了模板的目的),或者你是否定义了特定类型的行为(虽然这似乎也失败了目的)?
或者您只是简单地记录您的代码并让使用您班级的程序员采取预防措施?
答案 0 :(得分:2)
我通常使用像Boost / C ++ 11 static_assert
之类的东西来断言你想要的属性。这不仅可以让你确保它是数字的,而且还有像is_signed和is_integer这样的东西来保证更多细节。类型,如果你需要/想要。