fork(1) download
  1. template<typename T> struct S {};
  2. template<typename T> struct R {};
  3.  
  4. template<
  5. typename T,
  6. typename V>
  7. struct xxx;
  8.  
  9. template<
  10. template <class> class A,
  11. template <class> class B,
  12. typename X,
  13. typename Y>
  14. struct xxx<A<X>, B<Y>> {
  15. static constexpr const int value = false;
  16. };
  17.  
  18.  
  19. template<
  20. template <class> class U,
  21. typename X,
  22. typename Y>
  23. struct xxx<U<X>, U<Y>> {
  24. static constexpr const int value = true;
  25. };
  26.  
  27. int main() {
  28. typedef S<double> s1;
  29. typedef S<int> s2;
  30. typedef R<int> s3;
  31. static_assert(xxx<s1, s2>::value,
  32. "No, assertion must not be raised");
  33. static_assert(xxx<s2, s3>::value,
  34. "Yes, assertion must be raised");
  35. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:33:3: error: static_assert failed "Yes, assertion must be raised"
  static_assert(xxx<s2, s3>::value,
  ^             ~~~~~~~~~~~~~~~~~~
1 error generated.
stdout
Standard output is empty