32 lines
671 B
C++
32 lines
671 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
// expected-no-diagnostics
|
|
struct AnyPtr {
|
|
template<typename T>
|
|
operator T*() const;
|
|
};
|
|
|
|
// If A is a cv-qualified type, the top level cv-qualifiers of A's type
|
|
// are ignored for type deduction.
|
|
void test_cvquals(AnyPtr ap) {
|
|
int* const ip = ap;
|
|
const float * const volatile fp = ap;
|
|
}
|
|
|
|
// If A is a reference type, the type referred to by A is used for
|
|
// type deduction.
|
|
void test_ref_arg(AnyPtr ap) {
|
|
const int* const &ip = ap;
|
|
double * const &dp = ap;
|
|
}
|
|
|
|
struct AnyRef {
|
|
template<typename T>
|
|
operator T&() const;
|
|
};
|
|
|
|
void test_ref_param(AnyRef ar) {
|
|
int &ir = ar;
|
|
const float &fr = ar;
|
|
int i = ar;
|
|
}
|