我设计了我自己的std :: vector实现,我称其为il :: vector。我想要么:防止在模板中使用某些类型
- 专营它,你可以使用复制型
memcpy
(int
,double
,std::array<double, n>
,等等)。 - 对于不能用
memcpy
复制的类型使用不同的类,例如std::vector
。在后一种情况下,如果我想用某些不能用memcpy
复制的内容(例如il::vector<std::vector<double>>
)进行实例化,我想要编译时错误。
有没有办法做到这一点? PS:我总是得到如下答案:你应该使用std :: vector来代替。我用我自己的图书馆,主要理由是:
- 我想用一个指针来构造我的IL ::向量不被复制的数据
- 我想用ptrdiff_t的作为数组的索引,而不是这个的愚蠢的 size_t。使用无符号整数索引是STL最糟糕的想法之一。即使Stroustrup似乎也反对它。
- 我想用我自己的分配器来设计分配器,而不是为90年代这个设计用于不同目的的奇怪模型。
对不起有点粗鲁,但我厌倦了:STL是上帝,甚至不说它不符合你的需求。
@ user657267我真的不明白你的答案。此外,我不想使用C++库。 – InsideLoop 2014-11-06 08:13:15
关键是'std :: copy'已经在可复制的类型上执行了'memcpy'或等价物,否则就使用拷贝构造函数。 '我不想使用C++ Library'然后重新创建轮子。 – user657267 2014-11-06 08:16:38
@ user657267:我正在开发通常由Fortran/C/Delphi调用的库。当我得到数据时,它是以指针的形式出现的。没有办法将指针封装在std :: vector中。除非我找到办法做到这一点,否则我不能使用标准库。 – InsideLoop 2014-11-06 08:20:35