Dlaczego operatorzy przypisania kontenerów nie są wyjątkowi?

zauważyłem tostd::string(naprawdęstd::basic_strings) operator przypisania przeniesienia jestnoexcept. Ma to sens dla mnie. Ale potem zauważyłem, że żaden ze standardowych kontenerów (np.std::vector, std::deque, std::list, std::map) deklaruje operatora przypisania przeniesienianoexcept. To dla mnie mniej sensowne. ZAstd::vectorna przykład jest zazwyczaj zaimplementowany jako trzy wskaźniki, a wskaźniki mogą być z pewnością przypisane do ruchu bez rzucania wyjątku. Potem pomyślałem, że może problem polega na przesunięciu rozdzielacza kontenera, alestd::stringma też alokatory, więc jeśli to był problem, spodziewałbym się, że to wpłyniestd::string.

Dlaczego tak jeststd::stringoperator przypisania przeniesienianoexcept, ale nie są to operatory przypisania ruchu dla standardowych kontenerów?

questionAnswers(3)

yourAnswerToTheQuestion