有时我的任务是查找 getter 返回的值中的某些嵌套 getter 是否具有某些属性。经典的 C++ 会是这样的:
for (const auto& label: labels)
for (const auto& artist: label.artists())
if (artist.name = "Arcade Fire")
return true;
return false;
使用范围执行此操作的最佳方法是什么?我认为这样的事情可能会奏效:
labels| transform (&Label::artists) | join | transform(&Artist::name) | join | find_if_fn([](){/*...*/}) ;
但它很长,(部分原因是您必须编写 Class:member_fn 而不是 .member_fn。有没有更短的方法来做到这一点?