// { dg-do compile { target c++23 } } template struct F { F(T, U, V); // #1 F(T*, U*, V*); // #2 template F(int, int, W); // #3 }; F(bool, bool, bool) -> F; template struct G : F { using F::F; }; using ty1 = decltype(G(true, 'a', 1)); // uses #1 using ty1 = G; using ty2 = decltype(G((bool*)0, (char*)0, (int*)0)); // uses #2 using ty2 = G; using ty3 = decltype(G(0, 0, 0)); // uses #3 using ty3 = G; using ty4 = decltype(G(true, true, true)); // uses #4 using ty4 = G;