Merge from mainline (167278:168000).
[official-gcc/graphite-test-results.git] / gcc / testsuite / g++.dg / template / partial6.C
blob80bbfe3c138fd420b148754a60fd73d4cb3c7330
1 // PR c++/41703
2 // The second GetAllSize template is more specialized because even though
3 // deduction on each parameter type succeeds, we never get a template
4 // argument for its X to make it match the first template.
6 template <typename T, int (T::*)() const>
7 struct TSizeEnabler
9     typedef T TClass;
12 template <typename X>
13 int
14 GetAllSize(const X &Var)
15 { return sizeof(Var); }
17 template <typename X>
18 int
19 GetAllSize(const typename TSizeEnabler<X, &X::func>::TClass &Var)
20 { return Var.func(); }
22 struct H
24     int func() const;
27 int main()
29     H b;
30     return GetAllSize< H >(b);