doxygen 中的右值引用参数应该是什么类型? [进] 还是 [进、出]?
What kind of type should r-value reference parameter be in doxygen? [in] or [in, out]?
/**
* @param[?] u
*/
T func(U&& u);
参数 u
可以被 func
修改,而修改后的状态应该被忽略,因为它是右值引用。
我还没有找到任何相关信息,包括 Doxygen 手册。
你不应该考虑“这是一个参考,所以这意味着 X”。您应该考虑 u
对函数意味着什么以及函数用它做什么。仅从 u
移动不足以将其声明为 [inout]
参数。 [inout]
或 [out]
应在函数故意为其设置一个用户预期使用的值时使用。如果您从右值引用参数移动,则用户的参数 不再具有值 。这是“输出”的对立面。
确实,右值引用参数不能绑定到左值参数(直接)。这意味着用户不能只调用 func(some_variable)
;他们必须明确地搬进去:func(std::move(some_variable));
。这种拼写感觉不像是输出值;它正在将某些东西 转移到 函数中。如果用户期望 some_variable
有一个新值,这确实是一个奇怪的界面,特别是因为 func(some_type());
会有效地丢弃“输出”值。
/**
* @param[?] u
*/
T func(U&& u);
参数 u
可以被 func
修改,而修改后的状态应该被忽略,因为它是右值引用。
我还没有找到任何相关信息,包括 Doxygen 手册。
你不应该考虑“这是一个参考,所以这意味着 X”。您应该考虑 u
对函数意味着什么以及函数用它做什么。仅从 u
移动不足以将其声明为 [inout]
参数。 [inout]
或 [out]
应在函数故意为其设置一个用户预期使用的值时使用。如果您从右值引用参数移动,则用户的参数 不再具有值 。这是“输出”的对立面。
确实,右值引用参数不能绑定到左值参数(直接)。这意味着用户不能只调用 func(some_variable)
;他们必须明确地搬进去:func(std::move(some_variable));
。这种拼写感觉不像是输出值;它正在将某些东西 转移到 函数中。如果用户期望 some_variable
有一个新值,这确实是一个奇怪的界面,特别是因为 func(some_type());
会有效地丢弃“输出”值。