c uses a struct and cpp uses a template class