fork download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. template<typename D, typename... Args>
  5. struct get_value_int;
  6.  
  7. template<typename D>
  8. struct get_value_int<D> : std::integral_constant<int, D::value> {};
  9.  
  10. template<typename D, typename T2, typename... Args>
  11. struct get_value_int<D, T2, Args...> {
  12. template<typename D2, typename T22, typename Enable = void>
  13. struct impl
  14. : std::integral_constant<int, get_value_int<D, Args...>::value> {};
  15.  
  16. template<typename D2, typename T22>
  17. struct impl <D2, T22, std::enable_if_t<std::is_same<typename D2::type_id, typename T22::type_id>::value>>
  18. : std::integral_constant<int, T22::value> {};
  19.  
  20. static constexpr const int value = impl<D, T2>::value;
  21. };
  22.  
  23. int main() {
  24. // your code goes here
  25. return 0;
  26. }
Success #stdin #stdout 0s 3136KB
stdin
Standard input is empty
stdout
Standard output is empty