Files
android_external_libcxx/test/std/utilities/smartptr/unique.ptr
Eric Fiselier a4fd0c9d61 Overhaul unique_ptr - Implement LWG 2801, 2905, 2520.
This patch overhauls both specializations of unique_ptr while implementing
the following LWG issues:

* LWG 2801 - This issue constrains unique_ptr's constructors when the deleter type
  is not default constructible. Additionally it adds SFINAE conditions
  to unique_ptr<T[]>::unique_ptr(Up).

* LWG 2905 - This issue reworks the unique_ptr(pointer, /* see below */ deleter)
  constructors so that they correctly SFINAE when the deleter argument cannot
  be used to construct the stored deleter.

* LWG 2520 - This issue fixes initializing unique_ptr<T[]> from nullptr.
  Libc++ had previously implemented this issue, but the suggested resolution
  still broke initialization from NULL. This patch re-works the
  unique_ptr<T[]>(Up, deleter) overloads so that they accept NULL as well
  as nullptr.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300406 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 01:51:04 +00:00
..

Test Naming and Directory Structure
===================================

The directory structure for the unique_ptr class templates differs from the
normal test directory naming conventions (e.g. matching the stable name in the standard).

Instead of having a [unique.ptr.single] and [unique.ptr.runtime] directory,
each containing their own tests, a single directory, "unique.ptr.class",
contains both sets of tests.

This allows the common behavior of the two unique_ptr specializations to be
tested in the same place without duplication.

Tests specific to [unique.ptr.single] have the suffix ".single.pass.cpp"
and those specific to [unique.ptr.runtime] are named "*.runtime.pass.cpp".
Tests for both specializations are named normally.