1// PR c++/67244
2// { dg-do compile { target c++11 } }
3
4class A {
5public:
6  int operator*();
7};
8template <typename T, typename Predicate>
9void searchGen(int, int, T, Predicate p4) {
10  p4(0);
11}
12template <typename...> struct B;
13template <typename MetaFunction, typename Type, typename... Types>
14struct B<MetaFunction, Type, Types...> {
15  static void exec() { MetaFunction::template exec<Type>; }
16};
17template <typename MetaFunction, typename... Types> void forEachType() {
18  B<MetaFunction, Types...>::exec;
19}
20namespace {
21struct C {
22  template <typename T> void exec() {
23    A __trans_tmp_1;
24    const auto target = *__trans_tmp_1;
25    searchGen(0, 0, 0, [=](T) { [=] { target; }; });
26  }
27};
28}
29void ____C_A_T_C_H____T_E_S_T____75() { forEachType<C, int>; }
30