#include <iostream>
#include <cstdio>
#include <cstdint>
#include <type_traits>
using namespace std;

template<typename T>
uint16_t get_char_and_inc(T* &c) {
  if constexpr (std::is_same<T, const char>::value) {
  	cout << "c = const char* &" << endl;
  }
  else if constexpr (std::is_same<T, char>::value) {
  	cout << "c = char* &" << endl;
  }
  return *c++;
}

int main()
{
  const char *cc = "ab";
  printf("%p\n", cc);
  get_char_and_inc(cc);
  printf("%p\n", cc);
  
  char c[] = "ab";
  char *p = c;
  printf("%p\n", p);
  get_char_and_inc(p);
  printf("%p\n", p);
}