gpt4 book ai didi

c++ - 使用 auto 作为参数是否有负面影响?

转载 作者:太空狗 更新时间:2023-10-29 20:10:49 24 4
gpt4 key购买 nike

本着通用编程的精神,我创建了以下代码:

#include <iostream>
#include <functional>

class Functor
{
public:
void operator()()
{
std::cout << "Functor operator called." << std::endl;
}
};

void Function()
{
std::cout << "Function called." << std::endl;
}

void Call( auto & fp )
{
static int i;
std::cout << "Unified calling..." << &i << std::endl;
fp();
}

int main( int argc, char ** argv )
{
Functor functor;
std::function< void() > function = Function;

std::cout << "Begin testing..." << std::endl;
Call( functor );
Call( function );
std::cout << "End testing." << std::endl;

return 0;
}


Compiled with: g++ main.cpp -std=c++14
output:
Begin testing...
Unified calling...0x100402080
Functor operator called.
Unified calling...0x100402090
Function called.
End testing.

从静态地址可以看出,这会产生两个不同的函数,所以在我看来它像是某种模板速记。我的直觉是维护一个函数比维护多个函数要好,但是,除了注意非共享静态变量之外,我是否遗漏了一些可能使它成为糟糕选择的东西,而不是多个函数定义?

最佳答案

是的,有。当前的 C++ 标准禁止使用它们。

void Call( auto & fp )

是符合标准的编译器的编译错误。

关于c++ - 使用 auto 作为参数是否有负面影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36651568/

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