[diff.cpp14.utilities] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.4 C++ and ISO C++ 2014 [[diff.cpp14]](diff.cpp14#utilities) ### C.4.9 [[utilities]](utilities "22 General utilities library"): general utilities library [diff.cpp14.utilities] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L1845) **Affected subclause:** [[func.wrap]](func.wrap) **Change:** Constructors taking allocators removed[.](#1.sentence-1) **Rationale:** No implementation consensus[.](#1.sentence-2) **Effect on original feature:** Valid C++ 2014 code may fail to compile or may change meaning in this revision of C++[.](#1.sentence-3) Specifically, constructing a std​::​function with an allocator is ill-formed and uses-allocator construction will not pass an allocator to std​::​function constructors in this revision of C++[.](#1.sentence-4) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L1856) **Affected subclause:** [[util.smartptr.shared]](util.smartptr.shared) **Change:** Different constraint on conversions from unique_ptr[.](#2.sentence-1) **Rationale:** Adding array support to shared_ptr, via the syntax shared_ptr and shared_ptr[.](#2.sentence-2) **Effect on original feature:** Valid C++ 2014 code may fail to compile or may change meaning in this revision of C++[.](#2.sentence-3) [*Example [1](#example-1)*: #include std::unique_ptr arr(new int[1]); std::shared_ptr ptr(std::move(arr)); // error: int(*)[] is not compatible with int* — *end example*]