fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. auto anonTemplate = []{struct{ template <typename T> void foo() { cout << "default\n"; } template <> void foo<char>() { cout << "specialized\n"; } } result; return result; }();
  6.  
  7. anonTemplate.foo<int>();
  8. anonTemplate.foo<char>();
  9. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In lambda function:
prog.cpp:5:33: error: invalid declaration of member template in local class
  auto anonTemplate = []{struct{ template <typename T> void foo() { cout << "default\n"; } template <> void foo<char>() { cout << "specialized\n"; } } result; return result; }();
                                 ^
prog.cpp:5:101: error: explicit specialization in non-namespace scope 'struct main()::<lambda()>::<anonymous>'
  auto anonTemplate = []{struct{ template <typename T> void foo() { cout << "default\n"; } template <> void foo<char>() { cout << "specialized\n"; } } result; return result; }();
                                                                                                     ^
prog.cpp:5:108: error: variable or field 'foo' declared void
  auto anonTemplate = []{struct{ template <typename T> void foo() { cout << "default\n"; } template <> void foo<char>() { cout << "specialized\n"; } } result; return result; }();
                                                                                                            ^
prog.cpp:5:108: error: expected ';' at end of member declaration
prog.cpp:5:111: error: expected unqualified-id before '<' token
  auto anonTemplate = []{struct{ template <typename T> void foo() { cout << "default\n"; } template <> void foo<char>() { cout << "specialized\n"; } } result; return result; }();
                                                                                                               ^
prog.cpp: In function 'int main()':
prog.cpp:7:15: error: 'struct main()::<lambda()>::<anonymous>' has no member named 'foo'
  anonTemplate.foo<int>();
               ^
prog.cpp:7:19: error: expected primary-expression before 'int'
  anonTemplate.foo<int>();
                   ^
prog.cpp:8:15: error: 'struct main()::<lambda()>::<anonymous>' has no member named 'foo'
  anonTemplate.foo<char>();
               ^
prog.cpp:8:19: error: expected primary-expression before 'char'
  anonTemplate.foo<char>();
                   ^
stdout
Standard output is empty