Есть шаблонный контейнер, для которого можно задавать параметрами размер
Схематично
Код | template <std::size_t N> class Some { public: static constexpr std::size_t SIZE = N; static const Some UNKNOWN;
using container = std::array<uchar, N>; using value_type = typename container::value_type;
Some(value_type value) { m_array.assign(value); } Some(const std::initializer_list<value_type>& list) { ... } ~Some() {}
private: container m_array; };
|
для каждого специализированного шаблона задается нулевое значение специализацией
Код | template <uint N> const typename Some<N> Some<N>::UNKNOWN(0x00); using Container = Some<100>;
|
Так вот хотел скрыть специализацию, что то вроде
Код | template <std::size_t N> class Some { public: static constexpr std::size_t SIZE = N; using container = std::array<uchar, N>; using value_type = typename container::value_type;
private: static const Some<N> UNKNOWN (0x00); container m_array; };
|
почему так нельзя, а внешняя специализация канает? |