首页 > 解决方案 > 将此成员称为模板参数

问题描述

假设我有一个模板函数,它采用数据结构,除其他外,对其成员之一执行操作。例如:

template<typename T, int T::*member>
void example(T& t)
{
   t->*member++;
}

现在我想使用这个函数,但在某些情况下,成员就是对象本身。所以在上面的例子中,我想传递一个int作为参数。

int my_value;
example<int, ???>(my_value);

这可能吗?我会用什么代替???。

我知道我可以通过创建一个只包含一个 int 的包装器类型来做到这一点,但我想知道如果没有它是否可以做到这一点。我也知道我可以创建不假定成员关系的函数的第二个副本,但我更愿意保持这个 DRY。最后,我需要成员关系,因为真正的函数在 T 的迭代器上运行,其类型无法更改。

标签: c++templates

解决方案


推荐阅读