hideous_template.snippet.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*<-
  2. Distributed under the Boost Software License, Version 1.0.
  3. (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
  4. ->*/
  5. //[ hideous_template
  6. template<typename T> struct foo;
  7. template<class Return, class... Args> struct foo<Return(Args...)> {};
  8. template<class Return, class... Args> struct foo<Return(Args...) &> {};
  9. template<class Return, class... Args> struct foo<Return(Args...) &&> {};
  10. template<class Return, class... Args> struct foo<Return(Args...) const> {};
  11. template<class Return, class... Args> struct foo<Return(Args...) const &> {};
  12. template<class Return, class... Args> struct foo<Return(Args...) const &&> {};
  13. template<class Return, class... Args> struct foo<Return(Args...) volatile> {};
  14. template<class Return, class... Args> struct foo<Return(Args...) volatile &> {};
  15. template<class Return, class... Args> struct foo<Return(Args...) volatile &&> {};
  16. template<class Return, class... Args> struct foo<Return(Args...) const volatile> {};
  17. template<class Return, class... Args> struct foo<Return(Args...) const volatile &> {};
  18. template<class Return, class... Args> struct foo<Return(Args...) const volatile &&> {};
  19. template<class Return, class... Args> struct foo<Return(Args..., ...)> {};
  20. template<class Return, class... Args> struct foo<Return(Args..., ...) &> {};
  21. template<class Return, class... Args> struct foo<Return(Args..., ...) &&> {};
  22. template<class Return, class... Args> struct foo<Return(Args..., ...) const> {};
  23. template<class Return, class... Args> struct foo<Return(Args..., ...) const &> {};
  24. template<class Return, class... Args> struct foo<Return(Args..., ...) const &&> {};
  25. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile> {};
  26. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile &> {};
  27. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile &&> {};
  28. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile> {};
  29. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile &> {};
  30. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile &&> {};
  31. template<class Return, class... Args> struct foo<Return(Args...) noexcept> {};
  32. template<class Return, class... Args> struct foo<Return(Args...) & noexcept> {};
  33. template<class Return, class... Args> struct foo<Return(Args...) && noexcept> {};
  34. template<class Return, class... Args> struct foo<Return(Args...) const noexcept> {};
  35. template<class Return, class... Args> struct foo<Return(Args...) const & noexcept> {};
  36. template<class Return, class... Args> struct foo<Return(Args...) const && noexcept> {};
  37. template<class Return, class... Args> struct foo<Return(Args...) volatile noexcept> {};
  38. template<class Return, class... Args> struct foo<Return(Args...) volatile & noexcept> {};
  39. template<class Return, class... Args> struct foo<Return(Args...) volatile && noexcept> {};
  40. template<class Return, class... Args> struct foo<Return(Args...) const volatile noexcept> {};
  41. template<class Return, class... Args> struct foo<Return(Args...) const volatile & noexcept> {};
  42. template<class Return, class... Args> struct foo<Return(Args...) const volatile && noexcept> {};
  43. template<class Return, class... Args> struct foo<Return(Args..., ...) noexcept> {};
  44. template<class Return, class... Args> struct foo<Return(Args..., ...) & noexcept> {};
  45. template<class Return, class... Args> struct foo<Return(Args..., ...) && noexcept> {};
  46. template<class Return, class... Args> struct foo<Return(Args..., ...) const noexcept> {};
  47. template<class Return, class... Args> struct foo<Return(Args..., ...) const & noexcept> {};
  48. template<class Return, class... Args> struct foo<Return(Args..., ...) const && noexcept> {};
  49. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile noexcept> {};
  50. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile & noexcept> {};
  51. template<class Return, class... Args> struct foo<Return(Args..., ...) volatile && noexcept> {};
  52. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile noexcept> {};
  53. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile & noexcept> {};
  54. template<class Return, class... Args> struct foo<Return(Args..., ...) const volatile && noexcept> {};
  55. //]