Это должно работать. По крайней мере, это чистый C ++ 98
const int CLEAN = 0;
const int TARGET = 1;
const int LABELS_N = 2;
int LABELS_A[LABELS_N] = { CLEAN, TARGET};
const std::vector<int> LABELS(LABELS_A, LABELS_A+LABELS_N);
Я бы также порекомендовал вам заключить дополнительные элементы в пространство имен:
namespace detail {
const int LABELS_N = 2;
int LABELS_A[LABELS_N] = { CLEAN, TARGET};
}
const std::vector<int> LABELS(detail::LABELS_A, detail::LABELS_A+detail::LABELS_N);
Другой вариант - использование класса инициализатора, особенно если у вас много глобальных констант, таких как:
namespace detail {
struct Initializer
{
Initializer()
{
LABELS.push_back(CLEAN);
LABELS.push_back(TARGET);
}
std::vector<int> LABELS;
};
const Initializer initializer;
}
const std::vector<int>& LABELS = detail::initializer.LABELS;
И да, у вас, скорее всего, будут другие проблемы, если вы не обновите свой компилятор.