変数の名前を変数自体の一部にしたいようです。C++ は実行時に変数名を与えません。プログラムで使用する識別子は、渡される値のみを参照します。
名前を明示的に含むオブジェクト タイプを定義できます。
#include <iostream>
#include <string>
template< typename t >
struct named_value {
t value;
std::string name;
};
template< typename t >
void _( named_value< t > const &nv ) { // not a good name for a function
std::cout << nv.name; // not a good semantic for a function
}
template< typename t >
std::ostream &operator<< ( std::ostream &s, named_value< t > const &v ) {
return s << v.value;
}
typedef named_value< int > named_int;
void print (named_int p)
{
_(p); std::cout << "=" << p;
}
int main()
{
named_int a = { 1, "a" }, b = { 2, "b" };
_(a);
std::cout << " = " << a;
print(b);
}
http://ideone.com/AFHEq
しかし、このようなプログラムを書くべきではありません。