您可以指定类成员作为模板参数吗?

te*_*137 4 c++ templates

我想知道是否可以使用模板来做到这一点:

template <typename T, (something here)>
void DoSomething(T& class_object)
{
    std::cout << class_object.(something here) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,您能否以某种方式传递您想要访问模板的成员对象?我似乎在任何地方都找不到任何例子。我知道你可以用宏来做到这一点:

#define DO_SOMETHING(T, member)
void DoSomething(T& class_object)
{
    std::cout << class_object.member << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但如果可能的话我想使用模板。

Igo*_*nik 5

沿着这些思路:

template <typename T, auto T::*m>
void DoSomething(T& class_object)
{
    std::cout << (class_object.*m) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

演示