// RUN: %clang_cc1 -std=c++11 %s -verify // expected-no-diagnostics using size_t = decltype(sizeof(0)); template struct check; template struct check {}; constexpr bool startswith(const char *p, const char *q) { return !*q || (*p == *q && startswith(p + 1, q + 1)); } constexpr bool contains(const char *p, const char *q) { return *p && (startswith(p, q) || contains(p + 1, q)); } void foo() { check(); static_assert(contains(__func__, "foo"), ""); }