enum.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek//===----------------------------------------------------------------------===// 2326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// 3326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// The LLVM Compiler Infrastructure 4326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// 5326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// This file is distributed under the University of Illinois Open Source 6326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// License. See LICENSE.TXT for details. 7326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// 8326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek//===----------------------------------------------------------------------===// 9326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek 10ba243b59a1074e0962f6abfa3bb9aa984eac1245David Blaikie// type_traits 11ba243b59a1074e0962f6abfa3bb9aa984eac1245David Blaikie 12326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek// enum 13326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek 14326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek#include <type_traits> 15326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek 16326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenektemplate <class T> 17326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenekvoid test_enum_imp() 18326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek{ 19b8ad5ee345fa1fdd1fa9253f2d01f69becc88a04Ted Kremenek static_assert(!std::is_void<T>::value, ""); 2030a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth static_assert(!std::is_integral<T>::value, ""); 21326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_floating_point<T>::value, ""); 22326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_array<T>::value, ""); 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines static_assert(!std::is_pointer<T>::value, ""); 24326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_lvalue_reference<T>::value, ""); 25326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_rvalue_reference<T>::value, ""); 26326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_member_object_pointer<T>::value, ""); 27326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_member_function_pointer<T>::value, ""); 28af13d5b25b360e698cc1cf1055ad7d14e008e505Ted Kremenek static_assert( std::is_enum<T>::value, ""); 29283a358aecb75e30fcd486f2206f6c03c5e7f11dTed Kremenek static_assert(!std::is_union<T>::value, ""); 30326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek static_assert(!std::is_class<T>::value, ""); 31a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek static_assert(!std::is_function<T>::value, ""); 32326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenek} 33db34ab70961ca4b24b600eb47053d7af304659f5Tom Care 34326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenektemplate <class T> 35326be568e2cb04285c84e6e26a3e6b3822607361Ted Kremenekvoid test_enum() 367fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek{ 371d26f48dc2eea1c07431ca1519d7034a21b9bcffTed Kremenek test_enum_imp<T>(); 38ba243b59a1074e0962f6abfa3bb9aa984eac1245David Blaikie test_enum_imp<const T>(); 39b1b5daf30d2597e066936772bd206500232d7d65Ted Kremenek test_enum_imp<volatile T>(); 40c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu test_enum_imp<const volatile T>(); 41c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu} 42a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek 431d26f48dc2eea1c07431ca1519d7034a21b9bcffTed Kremenekenum Enum {zero, one}; 44a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek 45a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenekint main() 46a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek{ 47a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek test_enum<Enum>(); 48a5937bbfd19e61d651a58b0f0ffeef68457902a5Ted Kremenek} 49ba243b59a1074e0962f6abfa3bb9aa984eac1245David Blaikie