Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <type_traits>
  4.  
  5. template < typename T, typename ...Ts> T f(const T &a, Ts&&... args)
  6. {
  7. return a;
  8. }
  9.  
  10. template < typename R, typename T, typename... Ts>
  11. typename std::enable_if<!std::is_same<R, T>::value, R>::type
  12. f(typename T, Ts&&... args)
  13. //^^^^^^^^^^ --->HERE
  14. {
  15. return f<R>(std::forward<Ts>(args)...);
  16. }
  17.  
  18. int main() {
  19. std::cout << f<int>('a', std::string{ "string" }, 12);
  20. return 0;
  21. }
  22.  
  23. f(typename T, Ts&&... args)
  24. //^^^^^^^^^^
  25.  
  26. error : 'template<class R, class T, class ... Ts> typename std::enable_if<(! std::is_same< <template-parameter-1-1>, <template-parameter-1-2> >::value), R>::type f' conflicts with a previous declaration
  27. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  28. ^ ~~~~~~~
  29. note : previous declaration 'T f(T, Ts&& ...)'
  30.  
  31. template < typename T, typename ...Ts> T f(T a, Ts&&... args)
  32. ^
  33. error : expected nested - name - specifier before 'T'
  34. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  35. ^
  36. error : expected '(' before 'T'
  37. error : expected primary - expression before '&&' token
  38. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  39. ^ ~
  40. warning : variable templates only available with - std = c++14 or -std = gnu++14
  41. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  42. ^
  43. error : expected ';' before '{' token
  44. {
  45. ^
  46.  
  47. <source>:13 : 74 : error : expected a qualified name after 'typename'
  48. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  49. ^
  50. <source> : 13 : 74 : error : expected a qualified name after 'typename'
  51. <source> : 13 : 74 : error : expected ')'
  52. <source> : 13 : 64 : note : to match this '('
  53. typename std::enable_if<!std::is_same<R, T>::value, R>::type f(typename T, Ts&&... args)
  54. ^
  55. <source> : 15 : 34 : error : use of undeclared identifier 'args'; did you mean 'abs' ?
  56. return f<R>(std::forward<Ts>(args)...);
  57. ^~~~
  58. abs
  59. / usr / include / stdlib.h:837 : 12 : note : 'abs' declared here
  60. extern int abs(int __x) __THROW __attribute__((__const__)) __wur;
  61. ^
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement