is_volatile.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// type_traits
11
12// is_volatile
13
14#include <type_traits>
15
16template <class T>
17void test_is_volatile()
18{
19    static_assert(!std::is_volatile<T>::value, "");
20    static_assert(!std::is_volatile<const T>::value, "");
21    static_assert( std::is_volatile<volatile T>::value, "");
22    static_assert( std::is_volatile<const volatile T>::value, "");
23}
24
25int main()
26{
27    test_is_volatile<void>();
28    test_is_volatile<int>();
29    test_is_volatile<double>();
30    test_is_volatile<int*>();
31    test_is_volatile<const int*>();
32    test_is_volatile<char[3]>();
33    test_is_volatile<char[3]>();
34
35    static_assert(!std::is_volatile<int&>::value, "");
36    static_assert(!std::is_volatile<volatile int&>::value, "");
37}
38