C++ - 使用decltype或auto创建临时对象

Ady*_*Ady 1 c++

我有一个对象"a",我想将它复制到一个对象"b",但修改它有点不修改"a".然后,这将是这样的:

class SomeClass{

public:
    int a;

public:
    SomeClass(int _a)       {a = _a;}
    SomeClass& doStuff()    {++a; return *this;}

};

const SomeClass a( 25);
const auto b = SomeClass( a).doStuff();
Run Code Online (Sandbox Code Playgroud)

这很好用,但是我可以说我现在/不想写"a"的类型,然后我想出了这个解决方案:

const auto b = std::remove_const<decltype( a)>::type( a).doStuff();
Run Code Online (Sandbox Code Playgroud)

我这样做了吗?对此有一个不那么难看的解决方案吗?(我不必两次输入"a".)使用汽车或其他东西.优选不是宏.

mol*_*ilo 5

怎么样

template<typename T>
T copy(const T& t) { return T(t); }

const auto b = copy(a).doStuff();
Run Code Online (Sandbox Code Playgroud)