| // RUN: %clang_cc1 -triple=x86_64-linux-gnu -emit-llvm -o - %s | |
| // Don't crash if the argument to __builtin_constant_p isn't scalar. | |
| template <typename T> | |
| constexpr bool is_constant(const T v) { | |
| return __builtin_constant_p(v); | |
| } | |
| template <typename T> | |
| class numeric { | |
| public: | |
| using type = T; | |
| template <typename S> | |
| constexpr numeric(S value) | |
| : value_(static_cast<T>(value)) {} | |
| private: | |
| const T value_; | |
| }; | |
| bool bcp() { | |
| return is_constant(numeric<int>(1)); | |
| } |