I want to implement a generic method that could apply a determined operation on a struct member, passing that member as parameter. Something like this:
typedef struct Type_t{
int a;
double b;
} Type;
void gen_method(Type &t, TypeMember m){
t.m += 1;
}
What I've done until now:
typedef struct Type_t{
int a;
double b;
} Type;
typedef double Type::* PointerToTypeMemberDouble;
void gen_method(Type &t, PointerToTypeMemberDouble member){
t.*member += 1;
}
What I want to do
Now I want to implement the same generic method but using templates to allow the user to access any struct member, independentrly of its type. This is what I've tested:
typedef struct Type_t{
int a;
double b;
} Type;
template<typename T>
struct PointerToTypeMember{
typedef T Type::* type;
};
template<typename T>
void gen_method(Type &t, PointerToTypeMember<T>::type member){
// ...
}
The error
When I try to compile, I get this errors list:
error C2061: syntax error : identifier 'type'
And this warning:
warning C4346: 'myNamesPace::Type<T>::type' : dependent name is not a type