puede alguien explicar por qué el compilador sólo acepta el códigoplantilla sobrecarga y SFINAE trabajar sólo con las funciones pero no clases
template<typename L, size_t offset, typename enable_if< (offset<sizeof(L)), int >::type =0>
void a_function(){}
template<typename L, size_t offset, typename enable_if< (offset==sizeof(L)), int >::type =0>
void a_function(){}
pero no esto:
template<typename L, size_t offset, typename enable_if< (offset<sizeof(L)), int >::type =0>
class a_class{};
template<typename L, size_t offset, typename enable_if< (offset==sizeof(L)), int >::type =0>
class a_class{};
El compilador ve la segunda plantilla de clase como una redefinición de la primera.
Oh que '<' 'antes sizeof' hace que mi dolor cerebral^_ ^' –