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