8
例如,爲了說明的緣故,我們假設找到了一個整型向量的更高效的(存儲,操作)實現(與通用向量實現相比)。一個標準的遵守庫可以做類似的事情:標準庫實現可以專用於標準類型嗎?
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
,因爲他們還沒有標準。除非你有一些事實。
- 這是一個純學術問題(讀個人的好奇心)。