================
@@ -19,27 +19,33 @@ namespace pr41427 {
namespace Access {
struct B {
protected:
- struct type {};
+ struct type {}; // #Access-B-type
};
- template<typename T> struct D : B { // expected-note {{not viable}} \
- expected-note {{implicit deduction
guide declared as 'template <typename T> D(Access::D<T>) -> Access::D<T>'}}
- D(T, typename T::type); // expected-note {{private member}} \
- // expected-note {{implicit deduction guide
declared as 'template <typename T> D(T, typename T::type) -> Access::D<T>'}}
+ template<typename T> struct D : B { // #Access-D
+ D(T, typename T::type); // #Access-D-ctor
+ // expected-error@-1 {{'type' is a private member of 'Access::Y'}}
+ // expected-note@#Access-Y-type {{implicitly declared private here}}
+ // expected-note@#Access-D-ctor {{implicit deduction guide declared as
'template <typename T> D(T, typename T::type) -> Access::D<T>'}}
};
D b = {B(), {}};
class X {
using type = int;
};
- D x = {X(), {}}; // expected-error {{no viable constructor or deduction
guide}}
+ D x = {X(), {}};
+ // expected-error@-1 {{no viable constructor or deduction guide}}
+ // expected-note@#Access-D {{implicit deduction guide declared as
'template <typename T> D(Access::D<T>) -> Access::D<T>'}}
+ // expected-note@#Access-D {{candidate function template not viable:
requires 1 argument, but 2 were provided}}
+ // expected-note@#Access-D-ctor {{candidate template ignored: substitution
failure [with T = X]: 'type' is a private member of 'Access::X'}}
// Once we implement proper support for dependent nested name specifiers in
// friends, this should still work.
----------------
zwuis wrote:
We can update/remove the comment.
https://github.com/llvm/llvm-project/pull/191268
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits