ora*_*001 4 c++ std c++17 stdoptional
我不清楚通过引用将int的可选向量传递给函数的正确代码是否为:
void test_func(std::optional<std::vector<int>&> vec)
Run Code Online (Sandbox Code Playgroud)
要么
void test_func(std::optional<std::vector<int>>& vec)
Run Code Online (Sandbox Code Playgroud)
任何帮助,不胜感激。
可选的引用目前还不属于标准库的一部分。
原则上两者都有道理。
void test_func(std::optional<std::vector<int>&> vec)
Run Code Online (Sandbox Code Playgroud)
这里的std::optional是按值传递(复制)的,其中的引用也是如此。复制引用意味着它仍然指向旧对象。这可能会产生意外的行为,因为有两个实例指向std::optional同一个std::vector.
void test_func(std::optional<std::vector<int>>& vec)
Run Code Online (Sandbox Code Playgroud)
这里std::optional是通过引用传递的。您正在访问传递的相同选项,不会发生复制。
恕我直言,第二个更直观,目前可以在 STL 中使用,因此更可取。
据我所知,这在标准中是不可能的,因为人们尚未就作业的效果达成一致。
您想要实现的目标可以通过库功能实现:
void test_func(std::optional<std::reference_wrapper<std::vector<int>>> vec)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |