作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我试图获得一个基于整数值作为模板类型的特化。如果我使用单个整数,则特化是直截了当的。是否可以在不使用 boost 基础的情况下基于范围进行简单的模板特化。
这是代表代码翻译成
template <typename int val>
class Param
{
public:
};
template <> class Param<0 to 100>
{
};
template <> class Param<100 to 175>
{
};
最佳答案
这是使用 SFINAE 实现您的要求的一种(简单)方法:
template<bool> struct Range;
template<int val, typename = Range<true> >
class Param
{};
template<int val>
class Param<val, Range<(0 <= val && val <= 100)> >
{};
template<int val>
class Param<val, Range<(100 < val && val <= 175)> >
{};
Demo .
关于c++ - 基于整数范围的模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510514/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!