Сегодня я обнаружил, что порядок статических членов класса имеет значение. Вот это пример:Порядок статических членов класса
template <typename T>
struct SizeOf
{
template <typename U>
static auto Test() { return U{}; }
static const size_t value = sizeof(Test<T>());
};
std::cout << SizeOf<double>::value << std::endl; // ok!
Однако этот случай дает мне компилятор ошибки:
template <typename T>
struct SizeOf
{
static const size_t value = sizeof(Test<T>());
template <typename U>
static auto Test() { return U{}; }
};
std::cout << SizeOf<double>::value << std::endl; // error: "Test: undeclared identifier"
ли это означает, что статические члены обрабатываются так же, как глобальные переменные/функции, поэтому не видны статические члены, которые приходят позже?
быстрое изменение добавлено – ligoore