Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DiscreteSample() の戻り値のコピーを回避 #1275

Merged
merged 2 commits into from
Nov 28, 2024

Conversation

Raclamusi
Copy link
Member

DiscreteSample() の戻り値の型を auto から decltype(auto) に変更することで参照型(場合によってはプロキシ型など)を返すようにし、戻り値が無駄にコピーされることを回避しました。

@Raclamusi Raclamusi changed the base branch from main to v6_develop November 26, 2024 09:58
@Reputeless
Copy link
Member

Reputeless commented Nov 26, 2024

std::initializer_list 版に関しては auto のままのほうが良いと思いました。
その性質上、これに重いオブジェクトを渡すことはあまり考えにくく、また次のように書いた時のダングリングを防ぐ効果もあるので。

DiscreteDistribution weight({ 0.1, 0.2, 0.3 });
const auto& a = DiscreteSample({ String(10, U'A'), String(10, U'B'), String(10, U'C') }, weight);
Print << a;

類似例として、標準ライブラリの std::max()std::initializer_list 版は T を返します。

@Raclamusi
Copy link
Member Author

なるほど。確かにそうですね。
変更します。

@Reputeless
Copy link
Member

対応ありがとうございます! 明日にもマージします。

@Reputeless Reputeless merged commit 53a103e into Siv3D:v6_develop Nov 28, 2024
2 checks passed
@Reputeless
Copy link
Member

Merged. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants