fork(1) download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdint>
  4. #include <type_traits>
  5. using namespace std;
  6.  
  7. template<typename T>
  8. uint16_t get_char_and_inc(T* &c) {
  9. if constexpr (std::is_same<T, const char>::value) {
  10. cout << "c = const char* &" << endl;
  11. }
  12. else if constexpr (std::is_same<T, char>::value) {
  13. cout << "c = char* &" << endl;
  14. }
  15. return *c++;
  16. }
  17.  
  18. int main()
  19. {
  20. const char *cc = "ab";
  21. printf("%p\n", cc);
  22. get_char_and_inc(cc);
  23. printf("%p\n", cc);
  24.  
  25. char c[] = "ab";
  26. char *p = c;
  27. printf("%p\n", p);
  28. get_char_and_inc(p);
  29. printf("%p\n", p);
  30. }
Success #stdin #stdout 0s 5512KB
stdin
Standard input is empty
stdout
0x5604b57ec004
c = const char* &
0x5604b57ec005
0x7ffc5f0b8da5
c = char* &
0x7ffc5f0b8da6