gpt4 book ai didi

c++ - 从指针到成员的类模板推导

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:18 25 4
gpt4 key购买 nike

作为类模板参数之一,我需要使用指向成员的指针:

template <class Base, typename Member, Member Base::*m>
class MemPtrTestUgly
{
...
};

这需要用作

struct S
{
int t;
}

MembPtrTestUgly <S, int, &S::t> m;

但我想这样使用它:

MemPtrTestNice<S, &S::t> m;

成员类型是从成员指针推导出来的。我不能使用函数模板,因为不应实例化 MemPtrTest 类(只有一些静态函数会被使用)。有没有办法在纯 C++03(没有 Boost 或 TR1)中做到这一点?

最佳答案

您可以使用部分特化并获得非常漂亮的实现:

template <typename TMember, TMember MemberPtr>
class MemPtrTest;

template <typename TBase, typename TType, TType TBase::*MemberPtr>
class MemPtrTest<TType TBase::*, MemberPtr>
{
// ...
};

这将用作:

MemPtrTest<decltype(&S::t), &S::t> m;

当然,如果您不想隐式指定成员类型,这需要 decltype 或等效项。

关于c++ - 从指针到成员的类模板推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com