15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// type_traits
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is_const
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <type_traits>
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class T>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void test_is_const()
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert(!std::is_const<T>::value, "");
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert( std::is_const<const T>::value, "");
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert(!std::is_const<volatile T>::value, "");
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert( std::is_const<const volatile T>::value, "");
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main()
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<void>();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<int>();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<double>();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<int*>();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<const int*>();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<char[3]>();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_is_const<char[3]>();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert(!std::is_const<int&>::value, "");
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert(!std::is_const<const int&>::value, "");
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)