Например, предположим для аргумента, что найдена более эффективная реализация (хранение, операции над ней) для вектора интегральных типов (по сравнению с универсальной векторной реализацией). Может ли стандартная соответствующая библиотека сделать что-то вроде:Может ли стандартная реализация библиотеки специализироваться на стандартных типах?
template <class T, class A, class Enable = void>
class vector { ... };
template <class T>
class vector<T, A, std::enable_if_t<std::is_integral<T>::value>> { ... };
Я думаю, что это было бы незаконным из-за дополнительного параметра шаблона.
Но что насчет немного магии компилятора: (в сторону от дополнительной работы по реализации) будет что-то подобное будет позволено:
vector<integral_type, A>
быть внутренне отображается кclass vector_integral<T, A>
в то время какvector<anything_else, A>
быть внутренне отображено -class vector<T, A>
.
- Это, очевидно, не о специализации явно указанных в стандарте, как std::vector<bool>
- специализация, очевидно, имеют один и тот же интерфейс и наблюдаемое поведение.
- Давайте игнорировать concepts
, так как они еще не являются стандартом. Если у вас нет некоторых фактов.
- это чисто академический вопрос (чтения личного любопытства).