您可以为嵌套
views
。
template<class T>
class view {
using pointer = T*;
pointer data_;
};
template<class T>
class view<view<T>> {
using pointer = typename view<T>::pointer *;
pointer data_;
};
或指定
view::pointer
通过traits类,如果它是与主模板唯一不同的
template<class T>
class view_traits {
using pointer = T*;
};
template<class T>
class view_traits<view<T>> {
using pointer = typename view<T>::pointer *;
};
template<class T>
class view {
using pointer = typename view_traits<T>::pointer;
pointer data_;
// other members use T unchanged
};