| class _Nullable Smart; | |
| void f1(int * _Nonnull); | |
| void f2(Smart); // OK, not required on smart-pointer types | |
| using Alias = Smart; | |
| void f3(Alias); | |
| template <class T> class _Nullable SmartTmpl; | |
| void f2(SmartTmpl<int>); | |
| template <class T> void f2(SmartTmpl<T>); |