gpt4 book ai didi

c++ - 完美转发到数据成员的成员函数?

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

考虑一个具有private std::vector 数据成员的类:

class MyClass 
{
private:
std::vector<double> _data;
public:
template <class... Args>
/* something */ insert(Args&&... args) /* something */
{
return _data.insert(std::forward<Args>(args)...);
}
};

_data 的给定函数传递给 MyClass 的正确语法是什么(使用 C++14 auto/variadic templates/forward...)(例如在此处插入)并为用户提供相同的界面?

最佳答案

正确的语法是这样的:

class MyClass 
{
private:
std::vector<double> _data;
public:
template <class... Args>
decltype(auto) insert(Args&&... args)
{
return _data.insert(std::forward<Args>(args)...);
}
};

但是,您实际上并不需要 C++14 来执行此操作。您可以只使用 C++11 语法。

class MyClass 
{
private:
std::vector<double> _data;
public:
template <class... Args>
auto insert(Args&&... args)
-> decltype(_data.insert(std::forward<Args>(args)...))
{
return _data.insert(std::forward<Args>(args)...);
}
};

关于c++ - 完美转发到数据成员的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131313/

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