// This file uses code from http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html (serial 5) // Copyright (c) 2008 Benjamin Kosnik // Copyright (c) 2012 Zack Weinberg // Copyright (c) 2013 Roy Stogner // Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov // // Copying and distribution of this file, with or without modification, are // permitted in any medium without royalty provided the copyright notice // and this notice are preserved. This file is offered as-is, without any // warranty. template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = []() {}; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } int main() { return 0; }