fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. #include <type_traits>
  4.  
  5. /* ---- ambiguous -----
  6.  
  7. template <typename... Ts>
  8. auto snifae() -> std::conditional_t<true, std::true_type, std::common_type_t<Ts...>>;
  9.  
  10. template <typename...>
  11. auto snifae(...) -> std::false_type;
  12.  
  13. int main()
  14. {
  15. decltype(snifae<int, char, bool>()) t;
  16. return 0;
  17. }
  18.  
  19. */
  20.  
  21. // ---- not ambiguous ------
  22.  
  23. template <typename... Ts>
  24. auto snifae(void*) -> std::conditional_t<true, std::true_type, std::common_type_t<Ts...>>;
  25.  
  26. template <typename...>
  27. auto snifae(...) -> std::false_type;
  28.  
  29. int main()
  30. {
  31. decltype(snifae<int, char,bool>(nullptr)) t;
  32. return 0;
  33. }
Success #stdin #stdout 0s 3136KB
stdin
Standard input is empty
stdout
Standard output is empty