gpt4 book ai didi

c++ - 像 'T' 这样的模板参数是否总是被解释为每个值?

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:08 26 4
gpt4 key购买 nike

考虑下面的小例子:

template<typename T> void foo(T a) { ... }
struct Bar { ... };
Bar x;
foo(x);

我的问题:是否有任何情况下 foo(x) 可能被解释为 foo(const Bar& x)(x 通过引用传递),或者它总是解释为 foo(Bar x)(x 按值传递,即 x 的显式拷贝)?

在我的具体应用程序中,我的代码依赖于创建拷贝这一事实(x 在另一个线程中使用,原始 x 超出范围)。但我不确定我是否可以假设。我正在使用 GCC 4.6.1。

最佳答案

如果推导,它将始终按值传递。但是,如果您使模板参数显式化,则可以通过引用传递它:

foo<Bar&>(x); // will pass by reference
foo<Bar const&>(x); // will pass by reference to const

关于c++ - 像 'T' 这样的模板参数是否总是被解释为每个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com