[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<T[]> and shared_ptr<T[N]>[.](#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 <memory> std::unique_ptr<int[]> arr(new int[1]);
std::shared_ptr<int> ptr(std::move(arr)); // error: int(*)[] is not compatible with int* â *end example*]
