Заглянул в С++14, нашёл шаблонные переменные.
Тут же решил воплотить давнее желание — собрать указатели на все локальные строки в глобальный map, но уже на первом шаге получил ошибку: "error: use of deleted function".
Зато понял, что имена переменных могут включать в себя угловые скобки (бессмысленная возможность):
#include <iostream>
template<class T>
int len = 2;
template<class Fn>
const char* s_str = Fn();
//template<class Fn>
//auto x = Fn();
int main()
{
class centimeter {};
class meter {};
class nothing {};
len<centimeter> = 100 * len<meter>;
std::cout << len<nothing> << ',' << len<centimeter> << std::endl;
const char* str = "asdf";
auto oGetStr = [str]()->const char* {return str;};
//const char* p = s_str<decltype(oGetStr)>; // error
auto o2and2 = []()->int{return 2 + 2;};
//int n = x<decltype(o2and2)>; // error
return 0;
}
Может уже появился какой способ собрать указатели на локальные строки в глобальных переменных ? (Например, шаблон параметризованный локальной строкой...)