/*
* File: main.cpp
* Author: Vicky.H
*
*/
#include <iostream>
#include <cstddef>
class alloc {
};
inline size_t __deque_buf_size(size_t n, size_t sz) {
return n != 0 ? n : (sz < 512 ? size_t(512 / sz) : size_t(1));
}
// 模版类中嵌入模版自定义类型
template <class T, class Ref, class Ptr, size_t BufSize>
struct __deque_iterator {
typedef __deque_iterator<T, Ref, Ptr, BufSize> iterator;
typedef __deque_iterator<T, const Ref, const Ptr, BufSize> const_iterator;
static size_t buf_size() {
return __deque_buf_size(BufSize, sizeof (T));
}
};
template <class T, class Alloc = alloc, size_t BufSize = 0 >
class deque {
public:
typedef __deque_iterator<T, T&, T*, BufSize> iterator;
typedef __deque_iterator<T, const T&, const T*, BufSize> const_iterator;
};
/*
*
*/
int main(void) {
std::cout << (deque<int>::iterator::buf_size()) << std::endl; // 128 = 512 / 4
std::cout << (deque<int, alloc, 64 > ::const_iterator::buf_size()) << std::endl; // 64
return 0;
}
模版类中嵌套自定义模版类型
最新推荐文章于 2023-05-17 20:43:14 发布