作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
class Cl-6ren">
我们将无法找到正确语法的部分代码缩减为最小示例。
让我们假设以下定义(不用担心“为什么”;)
template <class>
class Element
{};
template <template <class> class>
class Client
{};
template <class>
struct TemplatedProvider
{
template <class T>
using element_template = Element<T>;
};
现在,从 C++11 开始,我们可以使用类模板或类型别名模板来实例化 Client
模板。以下函数编译得很好:
void fun()
{
Client<Provider::element_template> client;
Client<TemplatedProvider<int>::element_template> clientBis;
}
但在以下情况下,当给 Client
的模板参数是一个从属名称时,我们找不到正确的语法:
template <class T>
void templatedFun()
{
Client<TemplatedProvider<T>::element_template> client;
}
Clang(使用 3.6 测试)发出以下编译错误:
template argument for template template parameter must be a class template or type alias template
我们可以修正这个语法吗?
最佳答案
它必须是:
template <class T>
void templatedFun()
{
Client<TemplatedProvider<T>::template element_template> client;
}
关于c++ - 等同于 "typename",表示从属名称确实是 'template template parameter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417989/
判断这2个相似的Uris实际上相同的标准方法是什么? var a = new Uri("http://sample.com/sample/"); var b = new Uri("http://sam
这个问题在这里已经有了答案: Why does "true" == true show false in JavaScript? (5 个答案) 关闭 5 年前。 可能我很困惑,但我无法理解这个愚蠢
我是一名优秀的程序员,十分优秀!