I have a line that looks as follows:
F::enable<sizeof(value_type), offset>(index);
I get the following compiler error (GCC 6.3.1):
error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘long unsigned int’ to binary ‘operator<’
Obviously, the left angle bracket is being interpreted as the less than operator, instead of the start of a template parameter list. F is a template parameter (class F) which I expect to contain a static member function with the signature:
template <GLsizei stride, const GLvoid* offset>
static void enable(GLuint index);
I've tried liberally inserting whitespaces, looked into typedeffing the function, looked into moving to a regular function (not possible due to inheritance things). I have commented out the line to see if something above was causing the problem, no dice. Is there any way of explaining to the compiler that I don't want to compare a function and a size_t, I want to call a particular specialization of static member function in a class?