Files
android_external_libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp
Duncan P. N. Exon Smith 10a803db2c any: Add availability for experimental::bad_any_cast
As a follow up to r302172, add missing availability for bad_any_cast.

rdar://problem/32161524

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@305647 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-18 14:52:26 +00:00

66 lines
1.3 KiB
C++

//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++98, c++03, c++11
// XFAIL: availability=macosx
// <experimental/any>
// any::clear() noexcept
#include <experimental/any>
#include <cassert>
#include "experimental_any_helpers.h"
int main()
{
using std::experimental::any;
using std::experimental::any_cast;
// empty
{
any a;
// noexcept check
static_assert(
noexcept(a.clear())
, "any.clear() must be noexcept"
);
assertEmpty(a);
a.clear();
assertEmpty(a);
}
// small object
{
any a((small(1)));
assert(small::count == 1);
assertContains<small>(a, 1);
a.clear();
assertEmpty<small>(a);
assert(small::count == 0);
}
// large object
{
any a(large(1));
assert(large::count == 1);
assertContains<large>(a);
a.clear();
assertEmpty<large>(a);
assert(large::count == 0);
}
}