remove_cv.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen//===----------------------------------------------------------------------===//
243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen//
343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ��������������������The LLVM Compiler Infrastructure
443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen//
543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// This file is distributed under the University of Illinois Open Source
643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// License. See LICENSE.TXT for details.
743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen//
843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen//===----------------------------------------------------------------------===//
943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// type_traits
1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// remove_cv
1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include <type_traits>
1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansentemplate <class T, class U>
1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid test_remove_cv_imp()
1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen{
1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    static_assert((std::is_same<typename std::remove_cv<T>::type, U>::value), "");
2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}
2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansentemplate <class T>
2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid test_remove_cv()
2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen{
2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv_imp<T, T>();
2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv_imp<const T, T>();
2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv_imp<volatile T, T>();
2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv_imp<const volatile T, T>();
2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}
3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
3143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenint main()
3243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen{
3343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<void>();
3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<int>();
3543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<int[3]>();
3643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<int&>();
3743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<const int&>();
3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<int*>();
3943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    test_remove_cv<const int*>();
4043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}
4143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen