Fix some code which is invalid in C++11: an expression of enumeration type

can't be used as a non-type template argument of type bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Richard Smith 2012-09-13 21:18:18 +00:00
parent 785a41d138
commit 0067567927

View File

@ -55,7 +55,8 @@ struct is_class
// more details: // more details:
// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1 // http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
public: public:
enum { value = sizeof(char) == sizeof(dont_use::is_class_helper<T>(0)) }; static const bool value =
sizeof(char) == sizeof(dont_use::is_class_helper<T>(0));
}; };
@ -162,12 +163,11 @@ template <typename T> class is_integral_or_enum {
static UnderlyingT &nonce_instance; static UnderlyingT &nonce_instance;
public: public:
enum { static const bool
value = (!is_class<UnderlyingT>::value && !is_pointer<UnderlyingT>::value && value = (!is_class<UnderlyingT>::value && !is_pointer<UnderlyingT>::value &&
!is_same<UnderlyingT, float>::value && !is_same<UnderlyingT, float>::value &&
!is_same<UnderlyingT, double>::value && !is_same<UnderlyingT, double>::value &&
sizeof(char) != sizeof(check_int_convertible(nonce_instance))) sizeof(char) != sizeof(check_int_convertible(nonce_instance)));
};
}; };
// enable_if_c - Enable/disable a template based on a metafunction // enable_if_c - Enable/disable a template based on a metafunction