具有范围限定符的模板语法的含义

Posted

技术标签:

【中文标题】具有范围限定符的模板语法的含义【英文标题】:Meaning of template syntax with scope qualifier 【发布时间】:2013-03-25 19:28:10 【问题描述】:

我最近看到了这个:

template <class U> struct ST

...
;
template <class U, class V>
struct ST<U V::*>

...
;

我假设第二个模板是第一个模板的特化。

但是U V::* 的语义是什么???

【问题讨论】:

【参考方案1】:

这意味着“指向类 V 的成员的指针,其中成员的类型是 U”。例如,

struct X

    int x = 0;
;

// ...

int X::*p = &X::x;     // <== Declares p as pointer-to-member

ST<decltype(&X::x)> s; // <== Will instantiate your template specialization,
                       //     with U = int and V = X

ST<int X::*> t;        // <== Will instantiate your template specialization,
                       //     with U = int and V = X

【讨论】:

以上是关于具有范围限定符的模板语法的含义的主要内容,如果未能解决你的问题,请参考以下文章

获取所有具有绑定值的限定符的bean

volatile类型限定符的认识

SSIS 处理缺少文本限定符的平面文件

.Net 正则表达式处理中“$”限定符的潜在不当行为 [重复]

访问指向spark 2.0中的数据库限定符的hive表

VIsual Studio 2013 C++ 引用限定符问题