相关疑难解决方法(0)

什么是非弱化背景?

我最近接触过这个问题,答案可以概括为"这是一个非受限的背景".

具体来说,第一个说它是这样的东西,然后重定向到"细节"的标准,而第二个引用标准,这至少可以说是神秘的.

有人可以向凡人解释,比如我自己,什么是非受限的背景,什么时候发生,为什么会发生?

c++ templates template-argument-deduction argument-deduction

57
推荐指数
1
解决办法
4611
查看次数

通过值时的经验法则比通过const引用更快吗?

假设我有一个带有类型参数的函数T.它不会改变它,所以我可以选择通过const引用const T&或值传递它T:

void foo(T t){ ... }
void foo(const T& t){ ... }
Run Code Online (Sandbox Code Playgroud)

T在通过const引用变得比通过值便宜之前,是否应该有多大的经验法则?例如,假设我知道这一点sizeof(T) == 24.我应该使用const引用还是值?

我假设复制构造函数T是微不足道的.否则,问题的答案取决于复制构造函数的复杂性,当然.

我已经找了类似的问题,偶然发现了这个问题:

模板传递值或const引用或...?

但是,接受的答案( /sf/answers/341385621/)没有说明任何细节,它只是声明:

如果您希望T始终是数字类型或复制非常便宜的类型,那么您可以按值获取参数.

所以它并没有解决我的问题,而是改写它:一种类型必须要"复制非常便宜"?

c++ pass-by-reference pass-by-value c++11

32
推荐指数
3
解决办法
4529
查看次数

编译器是否优化了值传递的函数参数?

假设我有一个函数,其中参数通过值而不是const-reference传递.此外,假设在函数内部仅使用该值,即函数不会尝试修改它.在这种情况下,编译器是否能够确定它可以通过const-reference传递值(出于性能原因)并相应地生成代码?是否有任何编译器可以做到这一点?

c++ compiler-construction optimization

19
推荐指数
2
解决办法
3222
查看次数