https://llvm.org/bugs/show_bug.cgi?id=27173

            Bug ID: 27173
           Summary: Infinite recursion during template instantiation
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangb...@nondot.org
          Reporter: rtr...@google.com
                CC: llvm-bugs@lists.llvm.org
    Classification: Unclassified

$ cat bind.cc
template <typename _Tp> _Tp declval();

template <typename _Signature>
struct _Bind;

template <typename _Functor, typename T>
struct _Bind<_Functor(T)> {
  template <typename Arg, typename _Result = decltype(
                              declval<_Functor>()(declval<volatile T>()))>
  void operator()(Arg&& arg) {}
};

template <typename _Func, typename _Arg>
inline _Bind<_Func(_Arg)>
bind(_Func&& __f, _Arg&& __args) {}


struct A {
  template <typename T> A(T t);
};

template <typename T>
struct B {
  B(T&& arg);
};

template <typename T>
B<T> get_B();

void g(A a) {}

void test() {
  bind(g, get_B<A>());
}
$ clang -cc1 -std=c++11 bind.cc
Segmentation fault (core dumped)

>From the backtrace, these 4 functions are repeated:
clang::Sema::PerformCopyInitialization
clang::Sema::GatherArgumentsForCall
clang::Sema::CompleteConstructorCall
clang::InitializationSequence::Perform

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to