gpt4 book ai didi

c++ - 一个好的 C++ 编译器会优化引用吗?

转载 作者:IT老高 更新时间:2023-10-28 22:35:47 26 4
gpt4 key购买 nike

我想写一个模板函数来处理 std::stack<T>T 的实例,例如:

template<class StackType> inline
bool some_func( StackType const &s, typename StackType::value_type const &v ) {
// ...
}

我通过的原因v通过引用当然是针对 StackType::value_type 的情况进行优化。是 structclass而不是按值复制整个对象。

但是,如果 StackType::value_type是一个“简单”类型,如 int , 那么直接按值传递当然更好。

问题是:对于 int 这样的类型那将变成 int const&作为上述函数中的形式参数,编译器是否会优化引用并简单地按值传递?

最佳答案

我在这里查看 gcc 优化选项 http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

实际上你的情况有一个选项:

-fipa-sra

Perform interprocedural scalar replacement of aggregates, removal of unused parameters and replacement of parameters passed by reference by parameters passed by value.

Enabled at levels -O2, -O3 and -Os

据我所知,-O2 是在 linux 上发布构建的常用选项。

所以,简短的回答是:优秀的编译器之一

关于c++ - 一个好的 C++ 编译器会优化引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014021/

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