C2070 - недопустимый размер операнда
Следующий код выглядит хорошо для меня:
#include
template
struct A
{
static float m_kA[];
};
template
float A::m_kA[] = {1.0f, 2.0f, 3.0f};
int main()
{
printf("%d\n",
sizeof(A::m_kA) /
sizeof(A::m_kA[0]));
return 0;
}
Но когда я компилирую с VC9, я получаю следующую ошибку
error C2070: 'float []': illegal sizeof operand
Я ожидаю, что этот код скомпилируется. Я что-то пропустил? Кто-нибудь знает способ исправить это странное поведение (обратите внимание, что то же самое без шаблона компилируется нормально и выводит 3).
Обратите внимание, что удаление шаблона не вариант, я сделал этот пример, чтобы воспроизвести проблему, которую яЯ имею в коде, где мне нужен тип, содержащий массив, чтобы быть шаблоном.
Спасибо