std::vector
является неустойчивым контейнером, то есть путем изменения размера вектора, итераторы могут стать недействительными.
Напротив, std::list
или boost::container::stable_vector
являются стабильными контейнерами, которые сохраняют итераторы действительными до удаления соответствующего элемента.
Есть ли способ проверить, является ли данный контейнер стабильным? Например, если у меня есть что-то вроде
template<template <typename A, typename B=std::allocator<A> > class T=std::list>
class Foo
{
}
Можно ли разрешать только для стабильных контейнеров и запрещать неустойчивые?