Como você está static_assert os valores em um pacote de parâmetros de um modelo variável?

Estou criando um modelo variável.
Digamos que eu tenho algo parecido com isto:

template<typename T, T ... Numbers>
class Sequence final {

    // Unpack parameter pack into a constexpr array
    constexpr static T count = sizeof...(Numbers);        
    constexpr static T numbers[count] = { Numbers... };

    // ...
}

Instâncias desta classe podem ser instanciadas como:

Sequence<uint32_t, 1, 2, 3, 42, 25> seq;

Eu gostaria de ter certeza em tempo de compilação usando umstatic_assert&nbsp;que onumbers&nbsp;O pacote de parâmetros contém apenas números específicos. Para o bem deste exemplo, digamos que eu só quero permitir0&nbsp;ou1.

Então, eu gostaria de fazer algo como:

for (size_t i = 0; i < count; i++) {
    static_assert(numbers[i] == 1 || numbers[i] == 0, "Only ones and zeroes are allowed.");
}

Mas obviamentestatic_assert&nbsp;não funciona com umfor&nbsp;ciclo. Tenho certeza de que deve haver algum tipo de sintaxe para isso, mas não consegui descobrir.

Prefiro usar algo que seja compilado com um compilador C ++ 11 (ou talvez um compilador C ++ 14, se não for possível em C ++ 11).