- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图为我的无锁分配器类模板提供一个get_deleter()
(代码是here)。删除器类似于
template <typename T>
struct deleter {
allocator<T>& alloc;
void operator()(T* p) const noexcept {
p->~T();
alloc.deallocate(p);
}
};
注意 alloc
不应该是 const
,因为 deallocate()
不是 const
,它与std::allocator::deallocate()
.现在,我不确定我的 allocator::get_deleter()
是否应该是 const
。困境如下:
<强>1。 const
的基本原理:方法本身不会修改 *this
,并且是线程安全的(另请参阅 Does const mean thread-safe in C++11?)。
<强>2。不是 const
的理由: 该方法返回一个 deleter
,可用于修改 *this
。如果方法是 const
,也避免了 const_cast()
。
有什么建议或想法吗?就个人而言,我赞成 const
。
最佳答案
const_cast<allocator &>(*this)
你不知道是否有人会拥有 const allocator<...>
值并获得未定义的行为。即使你不这样做,你也是在撒谎 const
确实如此。
allocator::get_deleter
不能是const
没有 const_cast
,所以它不应该。
关于c++ - allocator::get_deleter() 应该是 const 合格的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254880/
我试图为我的无锁分配器类模板提供一个get_deleter()(代码是here)。删除器类似于 template struct deleter { allocator& alloc; voi
我一直在尝试使用 c++14,想知道为什么 std::get_deleter 从不返回它应该返回的指针。这是代码,请告诉我为什么它的输出是 0: https://ideone.com/WT5uSR #
我是一名优秀的程序员,十分优秀!