回答編集履歴
2
appendix
answer
CHANGED
@@ -17,4 +17,6 @@
|
|
17
17
|
// vi := int型変数
|
18
18
|
// s := string型変数
|
19
19
|
// vd := double型変数
|
20
|
-
```
|
20
|
+
```
|
21
|
+
|
22
|
+
C++ Core Guildlinesでも [F.21: To return multiple "out" values, prefer returning a struct or tuple](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-out-multi) にてタプル(や構造体)による多値返却スタイルを推奨しています。
|
1
appendix
answer
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
C++標準ライブラリにタプル型(`std::tuple`)が導入されたのはC++11以降と比較的新しいため、OpenCVのように歴史の長いライブラリでは積極的に切り替えてまでは利用されていません。
|
2
|
+
(OpenCVはもともとC言語APIから始まったほど歴史の古いライブラリですから、保守的にAPIを移行しているようです。最新のOpenCV 4系でようやくC APIが廃止されました。)
|
2
3
|
|
3
4
|
> 引数経由だと入力と出力がわかりづらくなるので、可読性の面ではタプルで返すほうが直感的のような気がします。
|
4
5
|
|
5
|
-
はい。最新のC++17では [構造化束縛(structured bindings)](https://cpprefjp.github.io/lang/cpp17/structured_bindings.html) も導入されたため、Pythonの
|
6
|
+
はい。最新のC++17では [構造化束縛(structured bindings)](https://cpprefjp.github.io/lang/cpp17/structured_bindings.html) も導入されたため、Python風の多値返却も可読性高く記述できるようになっています。
|
6
7
|
|
7
8
|
```cpp
|
8
9
|
#include <string>
|