7680x4320の日記

低解像度です。

Point Cloud Libraryで法線推定をしたときの結果が正しくない不具合を修正

これもだいぶ前のことですが、Visual StudioでビルドしたPoint Cloud Library (PCL)で、pcl::NormalEstimationOMPで法線推定を行ったときにデータレースを起こして正しく法線推定できない不具合を修正しました。

github.com

最初にPull requestを送ったときは単にfree functionを呼ぶべきところを同名のmember functionと間違えたのだろうと思っていたのですが、結局はVisual Studioのtwo phase name lookup(か、そのあたり)の振る舞いが標準とは異なるのが原因でした。 two phase name lookupに関してはVC++ユーザーのあいだでは広く知られた問題のようですが、寡聞にして存じませんでした。

ちなみにPRにコメントしているとおり、最近のVC++には標準準拠の振る舞いにするオプション(/permissive-)があるのですが、残念ながらOpenMPを有効にすると無効にされてしまいます。