The function Process() does not exists for a. Is there a way depending on the paramter type or existance of the function x() that the compiler uses the one or the other function?
I have a problem with it which I cannot really reproduce:
1 2 3
CREATE_MEMBER_CHECKS(GetInputName);
CREATE_MEMBER_CHECKS(IsInputNameEqual); // Error: "Member name specified in AmbiguitySeed is different from member name specified in Alias, or wrong Alias/AmbiguitySeed has been specified."
CREATE_MEMBER_CHECKS(GetOutputName);
How come? What could be the source of the problem?
Actually I renamed it to IsInputNameEqual1, but no avail
> I have a problem with it which I cannot really reproduce
Why can't you reproduce it?
Do you get this error with all compilers?
The static assertion failure is from here:
1 2 3 4 5 6 7 8 9 10 11 12 13
template<typename Alias, typename AmbiguitySeed>
struct has_member {
template<typename C> staticchar ((&f(decltype(&C::value))))[1];
template<typename C> staticchar ((&f(...)))[2];
//Make sure the member name is consistently spelled the same.
static_assert(
(sizeof(f<AmbiguitySeed>(0)) == 1)
, "Member name specified in AmbiguitySeed is different from member name specified in Alias, or wrong Alias/AmbiguitySeed has been specified."
);
staticboolconst value = sizeof(f<Alias>(0)) == 2;
};
Make sure that no inadvertent modification has crept into your copy of Brett Rossier's code.