is_volatile.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)//===----------------------------------------------------------------------===// 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// The LLVM Compiler Infrastructure 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)//===----------------------------------------------------------------------===// 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// type_traits 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// is_volatile 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <type_traits> 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)template <class T> 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void test_is_volatile() 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles){ 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static_assert(!std::is_volatile<T>::value, ""); 207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static_assert(!std::is_volatile<const T>::value, ""); 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static_assert( std::is_volatile<volatile T>::value, ""); 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static_assert( std::is_volatile<const volatile T>::value, ""); 237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)int main() 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){ 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) test_is_volatile<void>(); 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) test_is_volatile<int>(); 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) test_is_volatile<double>(); 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) test_is_volatile<int*>(); 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) test_is_volatile<const int*>(); 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) test_is_volatile<char[3]>(); 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) test_is_volatile<char[3]>(); 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static_assert(!std::is_volatile<int&>::value, ""); 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static_assert(!std::is_volatile<volatile int&>::value, ""); 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)