Интересно, можно ли использовать оператор C++11 noexcept для определения спецификатор noextcept e. грамм. деструктор, вызывающий метод другого класса (например, std::allocator::deallocate):
template <class DelegateAllocator = std::allocator<uint8_t>>
class MyAllocator final {
public:
using allocator_type = DelegateAllocator;
// ...
~MyAllocator() noexcept(noexcept(/* what to use */))) {
if (memory_ != nullptr) {
allocator_.deallocate(memory_, length_);
}
}
private:
allocator_type allocator_;
uint8_t* memory_;
// ...
};
Вопросы: Как лучше всего определить зависимость noexcept от используемых методов делегированного типа (например, std::allocator)? Что нужно сделать, когда это возможно, чтобы использовать методы делегированного типа, когда существуют разные перегрузки (например, как мне использовать конкретную реализацию освобождения, если не предоставлена только одна)?