我正在使用不应实例化以避免悬空引用的表达式模板类。但是我很想用 auto 声明一个变量,然后“auto”创建一个临时类的命名实例。
如何在以下代码中禁用临时类的自动声明?
class Base
{
};
class Temp : public Base
{
public:
Temp() {}
Temp(int, int) {}
Temp(const Temp&) = default;
Temp(Temp&&) = default;
};
Temp testFunc(int a, int b) {
return Temp{a,b};
}
int main() {
Base a = testFunc(1,2); // this should work
auto b = testFunc(1,2); // this should fail to compile
return 0;
}