2011-10-14 06:29:44 +08:00
|
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
|
2011-05-25 00:02:01 +08:00
|
|
|
|
|
|
|
// PR9999
|
|
|
|
template<bool v>
|
|
|
|
class bitWidthHolding {
|
|
|
|
public:
|
|
|
|
static const
|
|
|
|
unsigned int width = (v == 0 ? 0 : bitWidthHolding<(v >> 1)>::width + 1);
|
|
|
|
};
|
|
|
|
|
|
|
|
static const int width=bitWidthHolding<255>::width;
|
|
|
|
|
|
|
|
template<bool b>
|
|
|
|
struct always_false {
|
|
|
|
static const bool value = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<bool b>
|
|
|
|
struct and_or {
|
|
|
|
static const bool and_value = b && and_or<always_false<b>::value>::and_value;
|
|
|
|
static const bool or_value = !b || and_or<always_false<b>::value>::or_value;
|
|
|
|
};
|
|
|
|
|
|
|
|
static const bool and_value = and_or<true>::and_value;
|
|
|
|
static const bool or_value = and_or<true>::or_value;
|