作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
好的,我有:
template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const
{
/* Do Some Work */
}
};
};
不幸的是,“Do Some Work”的通用版本对我不起作用。它也不容易修改,因为它位于一些繁重的模板元编程代码的中间。
所以我虽然可以针对我的类型专门化该方法。所以我的第一步是尝试将通用方法从类中拉出来。
template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const;
};
};
template<typename T>
template<typename C>
void typename Reader<T>::Input template operator()<C>(C& val) const // LINE 13
{
/* Do Some Work */
}
不幸的是我得到了错误:
s.h:13: error: error: expected ‘)’ before ‘&’ token
最佳答案
正常写就可以了
template<typename T>
template<typename C>
void Reader<T>::Input::operator()(C& val) const // LINE 13
{
/* Do Some Work */
}
不过,在类外定义通用版本并不能帮助您提供它的特殊版本,否则我确实没有达到您的目标。
关于c++ - 模板方法的模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527929/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!