【发布时间】:2015-12-11 19:56:46
【问题描述】:
有人可以向我解释为什么我不能按照以下方式做某事:
int* b = new int(5);
int* c = new decltype(*b)(5);
cout << *c << endl;
这会抛出 C464 'int &': cannot use 'new' 来分配引用。我将如何执行这样的操作?我需要的是我发送的变量的取消引用基类型。
这可行
int* b = new int(5);
int** a = new int*(b);
decltype(*a) c = *a;
cout << *c<< endl;
我了解上面的代码是如何工作的,但是我将如何使用 new 执行类似的操作?
【问题讨论】:
-
因为是表达式you get back a reference
-
新标准:decay_t
(5); ? -
如果您点击链接,我的回答有几个解决方法。
-
针对这种特殊情况的一个不难看的解决方法是
new auto。 coliru.stacked-crooked.com/a/8a1fb6c0780d9bae -
随便
int *p = new auto{5};