强制通过值返回值常量存储(force const storing of returned by va

2019-09-17 02:53发布

这就是我要完成的:

struct test{};

const test returnconst(){
    return test();
}

test returnnonconst(){
    return test();
}

int main(){
          test t1=returnnonconst();
    const test t2=returnnonconst();
          test t3=returnconst();  //I want this to be a compile error
    const test t4=returnconst();
}

编译器接受所有的四个返回*通话。 我了解到,在第三次调用该对象的拷贝构造,但我想,而不是强制的调用者returnconst存储值作为const 。 是否有解决方法吗?

Answer 1:

你的价值回归。 你创建的副本 const 。 所以你基本上是说你不希望能够做的副本const

结构测试{私人:测试(常量测试和其他); };

上面的代码不工作,你会得到吨其他错误。 这是不可能的:)

因为您创建的副本限制它,它不会不工作const对象,但没有办法强制执行新创建的对象也是const



Answer 2:

有没有办法做到这一点。 你为什么要这么做? 什么是你想达到什么目的?



Answer 3:

在这里你的问题是,它返回一个const对象和调用您的拷贝赋值或通过构造一个新的非const对象的值复制到创建。 您可以通过值复制构造和强制用户禁用使用引用赋值但可能是恼人。



文章来源: force const storing of returned by value value