Point Cloud Libraryで法線推定をしたときの結果が正しくない不具合を修正
これもだいぶ前のことですが、Visual StudioでビルドしたPoint Cloud Library (PCL)で、pcl::NormalEstimationOMP
で法線推定を行ったときにデータレースを起こして正しく法線推定できない不具合を修正しました。
最初にPull requestを送ったときは単にfree functionを呼ぶべきところを同名のmember functionと間違えたのだろうと思っていたのですが、結局はVisual Studioのtwo phase name lookup(か、そのあたり)の振る舞いが標準とは異なるのが原因でした。 two phase name lookupに関してはVC++ユーザーのあいだでは広く知られた問題のようですが、寡聞にして存じませんでした。
ちなみにPRにコメントしているとおり、最近のVC++には標準準拠の振る舞いにするオプション(/permissive-
)があるのですが、残念ながらOpenMPを有効にすると無効にされてしまいます。