История изменений
Исправление fsb4000, (текущая версия) :
В той же MS STL mutable присутствует только в тестах, в самой либе ни одного mutable поля нету,
MS STL в самой либе mutable
присутсвует 25 раз. (Я в VSCode поиском посчитал :))
Вот один пример использования mutable
.
https://en.cppreference.com/w/cpp/memory/synchronized_pool_resource
class synchronized_pool_resource : public unsynchronized_pool_resource {
public:
using unsynchronized_pool_resource::unsynchronized_pool_resource;
void release() noexcept /* strengthened */ {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::release();
}
protected:
void* do_allocate(const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
return this->unsynchronized_pool_resource::do_allocate(_Bytes, _Align);
}
void do_deallocate(void* const _Ptr, const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::do_deallocate(_Ptr, _Bytes, _Align);
}
private:
mutable mutex _Mtx;
};
Кстати, методы же не помечены const. а mutable есть. Загадка…
Исправление fsb4000, :
В той же MS STL mutable присутствует только в тестах, в самой либе ни одного mutable поля нету,
MS STL в самой либе mutable
присутсвует 25 раз. (Я в VSCode поиском посчитал :))
Вот один пример использования mutable
.
https://en.cppreference.com/w/cpp/memory/synchronized_pool_resource
class synchronized_pool_resource : public unsynchronized_pool_resource {
public:
using unsynchronized_pool_resource::unsynchronized_pool_resource;
void release() noexcept /* strengthened */ {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::release();
}
protected:
void* do_allocate(const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
return this->unsynchronized_pool_resource::do_allocate(_Bytes, _Align);
}
void do_deallocate(void* const _Ptr, const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::do_deallocate(_Ptr, _Bytes, _Align);
}
private:
mutable mutex _Mtx;
};
Исправление fsb4000, :
В той же MS STL mutable присутствует только в тестах, в самой либе ни одного mutable поля нету,
MS STL в самой либе mutable присутсвует 25 раз. (Я в VSCode поиском посчитал :)
Вот один пример использования mutable.
https://en.cppreference.com/w/cpp/memory/synchronized_pool_resource
class synchronized_pool_resource : public unsynchronized_pool_resource {
public:
using unsynchronized_pool_resource::unsynchronized_pool_resource;
void release() noexcept /* strengthened */ {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::release();
}
protected:
void* do_allocate(const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
return this->unsynchronized_pool_resource::do_allocate(_Bytes, _Align);
}
void do_deallocate(void* const _Ptr, const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::do_deallocate(_Ptr, _Bytes, _Align);
}
private:
mutable mutex _Mtx;
};
Исправление fsb4000, :
В той же MS STL mutable присутствует только в тестах, в самой либе ни одного mutable поля нету,
MS STL в самой либе mutable присутсвует 25 раз. (Я в VSCode поиском посчитал :)
Вот один пример использование mutable.
https://en.cppreference.com/w/cpp/memory/synchronized_pool_resource
class synchronized_pool_resource : public unsynchronized_pool_resource {
public:
using unsynchronized_pool_resource::unsynchronized_pool_resource;
void release() noexcept /* strengthened */ {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::release();
}
protected:
void* do_allocate(const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
return this->unsynchronized_pool_resource::do_allocate(_Bytes, _Align);
}
void do_deallocate(void* const _Ptr, const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::do_deallocate(_Ptr, _Bytes, _Align);
}
private:
mutable mutex _Mtx;
};
Исходная версия fsb4000, :
В той же MS STL mutable присутствует только в тестах, в самой либе ни одного mutable поля нету,
MS STL в самой либе mutable присутсвует 25 раз. (Я в VSCode поиском посчитал :)
Вот как пример использование mutable.
https://en.cppreference.com/w/cpp/memory/synchronized_pool_resource
class synchronized_pool_resource : public unsynchronized_pool_resource {
public:
using unsynchronized_pool_resource::unsynchronized_pool_resource;
void release() noexcept /* strengthened */ {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::release();
}
protected:
void* do_allocate(const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
return this->unsynchronized_pool_resource::do_allocate(_Bytes, _Align);
}
void do_deallocate(void* const _Ptr, const size_t _Bytes, const size_t _Align) override {
lock_guard<mutex> _Guard{_Mtx};
this->unsynchronized_pool_resource::do_deallocate(_Ptr, _Bytes, _Align);
}
private:
mutable mutex _Mtx;
};