diff options
| author | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
|---|---|---|
| committer | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
| commit | 222e2a7620e6520ffaf4fc4e69d79c18da31542e (patch) | |
| tree | 7bfbc05bfa3b41c8f9d2e56d53a0bc3e310df239 /clang/test/CXX/special/class.copy/p15-0x.cpp | |
| parent | 3d206f03985b50beacae843d880bccdc91a9f424 (diff) | |
Add the clang library to the repo (with some of my changes, too).
Diffstat (limited to 'clang/test/CXX/special/class.copy/p15-0x.cpp')
| -rw-r--r-- | clang/test/CXX/special/class.copy/p15-0x.cpp | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/clang/test/CXX/special/class.copy/p15-0x.cpp b/clang/test/CXX/special/class.copy/p15-0x.cpp new file mode 100644 index 0000000..fff8844 --- /dev/null +++ b/clang/test/CXX/special/class.copy/p15-0x.cpp @@ -0,0 +1,41 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s + +namespace PR10622 { +  struct foo { +    const int first; +    foo(const foo&) = default; +  }; +  void find_or_insert(const foo& __obj) { +    foo x(__obj); +  } + +  struct bar : foo { +    bar(const bar&) = default; +  }; +  void test_bar(const bar &obj) { +    bar obj2(obj); +  } +} + +namespace PR11418 { +  template<typename T> +  T may_throw() { +    return T(); +  } + +  template<typename T> T &&declval() noexcept; + +  struct NonPOD { +    NonPOD(); +    NonPOD(const NonPOD &) noexcept; +    NonPOD(NonPOD &&) noexcept; +  }; + +  struct X { +    NonPOD np = may_throw<NonPOD>(); +  }; + +  static_assert(noexcept(declval<X>()), "noexcept isn't working at all"); +  static_assert(noexcept(X(declval<X&>())), "copy constructor can't throw"); +  static_assert(noexcept(X(declval<X>())), "move constructor can't throw"); +} | 
