* pt.c (convert_nontype_argument): Don't call build_converted_constant_expr if it could involve calling a conversion function with a instantiation-dependent constructor as its argument. * g++.dg/cpp0x/constexpr-conv3.C: New test. * g++.dg/cpp0x/constexpr-conv4.C: New test. From-SVN: r270178
26 lines
406 B
C
26 lines
406 B
C
// PR c++/87145
|
|
// { dg-do compile { target c++11 } }
|
|
|
|
template<typename T, T t> struct integral_constant {
|
|
static constexpr T value = t;
|
|
};
|
|
|
|
enum class Enum : unsigned {};
|
|
|
|
struct Pod {
|
|
unsigned val;
|
|
|
|
constexpr operator Enum() const {
|
|
return static_cast<Enum>(val);
|
|
}
|
|
};
|
|
|
|
template<unsigned N>
|
|
constexpr void foo() {
|
|
using Foo = integral_constant<Enum, Pod{N}>;
|
|
}
|
|
|
|
int main() {
|
|
foo<2>();
|
|
}
|