fork(8) download
  1. #include <iostream>
  2. #include <regex>
  3.  
  4. template <typename T, T& var>
  5. std::string get_variable_name() {
  6. std::string str(__PRETTY_FUNCTION__);
  7. std::smatch match;
  8. std::regex pattern("T& var = (\\w+)");
  9. std::regex_search(str, match, pattern);
  10. return match[1];
  11. }
  12.  
  13. char char_1;
  14. int int_2;
  15. double double_3;
  16. float float_4;
  17. std::string string_5;
  18.  
  19. int main()
  20. {
  21. std::cout << get_variable_name<decltype(char_1), char_1>() << std::endl;
  22. std::cout << get_variable_name<decltype(int_2), int_2>() << std::endl;
  23. std::cout << get_variable_name<decltype(double_3), double_3>() << std::endl;
  24. std::cout << get_variable_name<decltype(float_4), float_4>() << std::endl;
  25. std::cout << get_variable_name<decltype(string_5), string_5>() << std::endl;
  26. }
  27.  
Success #stdin #stdout 0s 4360KB
stdin
Standard input is empty
stdout
char_1
int_2
double_3
float_4
string_5