阅读完本教程后,我对自己的措辞感到有些困惑.但我相信它就像这样简单:教程解释了为什么分配器的模板头显示
allocator(const allocator&) throw();
和
template <class U> allocator(const allocator<U>&) throw();
即使复制构造函数对于分配器来说相当无用.答案是分配器的规范不允许构造函数抛出异常.因此,复制构造函数公共接口定义了具有异常规范throw()(不抛出任何异常)的复制构造函数,以防止某人使用可能引发异常的复制构造函数派生自己的分配器.
请参阅此链接,以获得有关异常规范的详细说明,如果这是抛出的内容.(没有双关语.真的.)
因此,它们并不意味着在创建分配器时,您必须提供复制构造函数.他们只是指出规范明确禁止您定义抛出任何异常的规范.`
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |