może ktoś wyjaśnić, dlaczego kompilator przyjmuje tylko ten kodszablon przeciążenia i SFINAE działa tylko z funkcji, ale nie klas
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(){}
ale nie w ten sposób:
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{};
kompilator widzi drugiej klasy szablon jako redefinicja pierwszego.
Oh, że '<' 'sizeof' przed sprawia, że mój mózg boli^_^ –