fork download
  1. #include <iostream>
  2.  
  3. double add_one (double x)
  4. {
  5. return x+1;
  6. }
  7.  
  8. template <typename Type, Type Instance>
  9. struct test_type
  10. {
  11. double operator() (double x)
  12. {
  13. return Instance (x);
  14. }
  15. };
  16.  
  17. int main ()
  18. {
  19. test_type<decltype(add_one), add_one> test;
  20.  
  21. std::cout << test(10.0) << "\n";
  22.  
  23. return 0;
  24. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:19:38: error: ‘double(double)’ is not a valid type for a template non-type parameter
  test_type<decltype(add_one), add_one> test;
                                      ^
prog.cpp:19:44: error: invalid type in declaration before ‘;’ token
  test_type<decltype(add_one), add_one> test;
                                            ^
prog.cpp:21:24: error: ‘test’ cannot be used as a function
  std::cout << test(10.0) << "\n";
                        ^
stdout
Standard output is empty