1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <memory> 11 12 // template<class T> class shared_ptr 13 // { 14 // public: 15 // typedef T element_type; 16 // typedef weak_ptr<T> weak_type; // C++17 17 // ... 18 // }; 19 20 #include <memory> 21 22 #include "test_macros.h" 23 24 struct A; // purposefully incomplete 25 26 int main() 27 { 28 static_assert((std::is_same<std::shared_ptr<A>::element_type, A>::value), ""); 29 #if TEST_STD_VER > 14 30 static_assert((std::is_same<std::shared_ptr<A>::weak_type, std::weak_ptr<A>>::value), ""); 31 #endif 32 } 33