我不清楚通过引用将可选的整数向量传递给函数的正确代码是否是:
void test_func(std::optional<std::vector<int>&> vec)
或者
void test_func(std::optional<std::vector<int>>& vec)
非常感谢任何帮助。
我不清楚通过引用将可选的整数向量传递给函数的正确代码是否是:
void test_func(std::optional<std::vector<int>&> vec)
或者
void test_func(std::optional<std::vector<int>>& vec)
非常感谢任何帮助。
非拥有指针是可为空的引用类型。
void test_func(std::vector<int>* vec)
目前可选的引用不是标准库的一部分。
两者原则上都有意义。
void test_func(std::optional<std::vector<int>&> vec)
这里std::optional
是按值传递(复制),其中的引用也是如此。复制引用意味着它仍然指向旧对象。这可能会产生意外的行为,因为有两个实例std::optional
指向同一个std::vector
.
void test_func(std::optional<std::vector<int>>& vec)
这里std::optional
是通过引用传递的。您正在访问传递的相同选项,不会发生复制。
第二个更直观,目前在 STL 中可用,因此更可取。
据我所知,这在标准中是不可能的,因为人们尚未就任务的影响达成一致。
使用库功能可以实现您想要实现的目标:
void test_func(std::optional<std::reference_wrapper<std::vector<int>>> vec)