fork(5) download
  1. #include <cstdint>
  2. #include <iostream>
  3. #include <type_traits>
  4.  
  5. void Get(std::nullptr_t) { std::cout << "nullptr" << std::endl; }
  6. void Get(int* out) { std::cout << "int* :" << *out << std::endl; }
  7. void Get(std::int64_t* out) { std::cout << "int64* :" << *out << std::endl; }
  8. void Get(double* out) { std::cout << "double* :" << *out << std::endl; }
  9. void Get(char** ) { std::cout << "char** :" << std::endl; }
  10. void Get(void** ) { std::cout << "void** :" << std::endl; }
  11.  
  12. void Get() {}
  13.  
  14. template <typename T, typename... Args>
  15. typename std::enable_if<std::is_same<std::nullptr_t, T>::value || std::is_pointer<T>::value>::type
  16. Get(T out, Args... other)
  17. {
  18. Get(out);
  19. Get(other...);
  20. }
  21.  
  22. int main()
  23. {
  24. int i = 42;
  25. double d = 4.2;
  26. Get(&i, nullptr, &d);
  27. return 0;
  28. }
  29.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
int* :42
nullptr
double* :4.2