作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个带有 bool 模板参数的类。该类将有几个方法,我需要专注于类 bool 模板参数。有没有一种方法可以在不专门化整个类(class)本身的情况下做到这一点?
下面的 Foo::bar() 是我的意思的一个例子,它不起作用,因为 std::is_same 适用于类型而不是值
谢谢。
template<bool Mode>
class Foo
{
public:
template<bool M=Mode, typename std::enable_if<std::is_same<M,true>::value>::type * = 0>
void bar()
{
std::cout << "true" << std::endl;
}
template<bool M=Mode, typename std::enable_if<std::is_same<M,false>::value>::type * = 0>
void bar()
{
std::cout << "false" << std::endl;
}
最佳答案
也许我遗漏了一些东西,但为什么不使用普通的好旧特化呢?
template <bool M>
struct base_template {
void bar();
};
template <>
inline void base_template<true>::bar() { std::cout << "true\n"; }
template <>
inline void base_template<false>::bar() { std::cout << "false\n"; }
关于c++类成员函数对bool值的特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529512/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!