45 lines
887 B
C++
45 lines
887 B
C++
// RUN: %clang_cc1 -fsyntax-only %s
|
|
|
|
struct AnyT {
|
|
template<typename T>
|
|
operator T();
|
|
};
|
|
|
|
void test_cvqual_ref(AnyT any) {
|
|
const int &cir = any;
|
|
}
|
|
|
|
struct AnyThreeLevelPtr {
|
|
template<typename T>
|
|
operator T***() const
|
|
{
|
|
T x = 0;
|
|
// FIXME: looks like we get this wrong, too!
|
|
// x = 0; // will fail if T is deduced to a const type
|
|
// (EDG and GCC get this wrong)
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
struct X { };
|
|
|
|
void test_deduce_with_qual(AnyThreeLevelPtr a3) {
|
|
int * const * const * const ip = a3;
|
|
}
|
|
|
|
struct AnyPtrMem {
|
|
template<typename Class, typename T>
|
|
operator T Class::*() const
|
|
{
|
|
T x = 0;
|
|
// FIXME: looks like we get this wrong, too!
|
|
// x = 0; // will fail if T is deduced to a const type.
|
|
// (EDG and GCC get this wrong)
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
void test_deduce_ptrmem_with_qual(AnyPtrMem apm) {
|
|
const float X::* pm = apm;
|
|
}
|