构件和模板参数语法上的指针

pointer on a member and template parameter syntax

本文关键字:指针 语法 参数 构件      更新时间:2023-10-16

说我们有一个结构模板参加课程,并且在此类上有一个指针:

struct A<A,&A::a>

我无法像这样声明模板

template<class T,class U>
struct{};

我必须写

template<class T,typename T::type var>
struct{};

为什么&A::a不能绑定到简单的typename T语法中?&A::a是在成员上的指针,因此我们可以期望一个简单的打字机t有效,但事实并非如此

&A::a value ,而不是 type 。因此,模板声明没有任何意义。

这可能是如何工作的:

template <typename A, int A::* Ptr> struct Foo { };
struct Bar { int n; };
int main()
{
    Foo<Bar, &Bar::n> f;
}

或更一般地,

template <typename T, typename U, U T::* Ptr> struct Foo { };
Foo<Bar, int, &Bar::n> f;