是否有可能在struct
内部获得“电流类型” struct
?例如,我想做这样的事情:
struct foobar {
int x, y;
bool operator==(const THIS_TYPE& other) const /* What should I put here instead of THIS_TYPE? */
{
return x==other.x && y==other.y;
}
}
我试着这样做:
struct foobar {
int x, y;
template<typename T>
bool operator==(const T& t) const
{
decltype (*this)& other = t; /* We can use `this` here, so we can get "current type"*/
return x==other.x && y==other.y;
}
}
但它看起来很丑,需要支持最新的 C++ 标准,并且 MSVC 无法编译它(它因“内部错误”而崩溃)。
实际上,我只想编写一些预处理器宏来自动生成函数,例如operator==
:
struct foobar {
int x, y;
GEN_COMPARE_FUNC(x, y);
}
struct some_info {
double len;
double age;
int rank;
GEN_COMPARE_FUNC(len, age, rank);
}
但我需要知道宏内部的“当前类型”。