remove_volatile.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//===----------------------------------------------------------------------===//
2ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//
3ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//                     The LLVM Compiler Infrastructure
4ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//
5ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com// This file is distributed under the University of Illinois Open Source
6ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com// License. See LICENSE.TXT for details.
7ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//
8ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com//===----------------------------------------------------------------------===//
9ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
10ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com// type_traits
11ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
12c26d94fd7dc0b00cd6d0e42d28285f4a38aff021bsalomon@google.com// remove_volatile
13ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
14ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com#include <type_traits>
155f74cf8c49701f514b69dc6f1a8b5c0ffd78af0asugoi@google.com
16ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comtemplate <class T, class U>
17ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comvoid test_remove_volatile_imp()
1849f085dddff10473b6ebf832a974288300224e60bsalomon{
1949f085dddff10473b6ebf832a974288300224e60bsalomon    static_assert((std::is_same<typename std::remove_volatile<T>::type, U>::value), "");
20c4dc0ad8e252a7e30d19b47d3d0d9f2c69faf854commit-bot@chromium.org}
21c377baf406996aed18d82d328029c82dbc3b8ddatomhudson@google.com
22ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comtemplate <class T>
23ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comvoid test_remove_volatile()
24ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com{
25ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile_imp<T, T>();
26ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile_imp<const T, const T>();
27ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile_imp<volatile T, T>();
28c4dc0ad8e252a7e30d19b47d3d0d9f2c69faf854commit-bot@chromium.org    test_remove_volatile_imp<const volatile T, const T>();
29ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com}
30ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
31ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comint main()
32ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com{
33ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile<void>();
34ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile<int>();
35ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile<int[3]>();
36ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile<int&>();
37e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    test_remove_volatile<const int&>();
38e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    test_remove_volatile<int*>();
39ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    test_remove_volatile<volatile int*>();
40ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com}
4132184d81629e39809bb9e915286d8fe971a8ed68commit-bot@chromium.org