Ответ 1
Я не вижу причин, по которым это не должно работать, и последние версии gcc и clang компилируют ваш код без проблем.
Это связано с следующей ошибкой gcc: Брейс-инициализация вектора с прямой инициализацией NSDMI не работает в шаблоне в который в инициализации класса работает для случая, отличного от шаблона, но не для случая шаблона:
#include <vector>
struct X {X(int) {}};
template <class zomg>
class T {
std::vector<int> x{0};
};
int main()
{
T<int> t;
}
Этот отчет об ошибке: непустой бит-init-list нестатического элемента данных T [N] в шаблоне класса приводит к ошибке диагностики, если T является классом, немного ближе со следующим тестовым примером: сбой аналогичным образом:
struct A { };
template<class>
struct B {
A a[1] = { A () };
};
int main () { B<void> b; }