//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// UNSUPPORTED: c++98, c++03, c++11
#include <memory>
#include <string>
#include <cassert>

//    The only way to create an unique_ptr<T[]> is to default construct them.

class foo {
public:
    foo () : val_(3) {}
    int get () const { return val_; }
private:
    int val_;
    };

int main(int, char**)
{
    {
    auto p1 = std::make_unique<int[]>(5);
    for ( int i = 0; i < 5; ++i )
        assert ( p1[i] == 0 );
    }

    {
    auto p2 = std::make_unique<std::string[]>(5);
    for ( int i = 0; i < 5; ++i )
        assert ( p2[i].size () == 0 );
    }

    {
    auto p3 = std::make_unique<foo[]>(7);
    for ( int i = 0; i < 7; ++i )
        assert ( p3[i].get () == 3 );
    }

  return 0;
}
