Since Iterator<T> is used as a base class for exported classes and is instantiated in both arrow.dll and arrow_dataset.dll we get multiple definition errors. The solution taken by MSVC's stl implementation in the similar case of std::function is type erasure. Since it's not a base class MSVC doesn't force public visibility of its members.
Reporter: Ben Kietzman / @bkietz
Assignee: Ben Kietzman / @bkietz
Related issues:
PRs and other links:
Note: This issue was originally created as ARROW-6558. Please see the migration documentation for further details.
Since
Iterator<T>is used as a base class for exported classes and is instantiated in both arrow.dll and arrow_dataset.dll we get multiple definition errors. The solution taken by MSVC's stl implementation in the similar case ofstd::functionis type erasure. Since it's not a base class MSVC doesn't force public visibility of its members.Reporter: Ben Kietzman / @bkietz
Assignee: Ben Kietzman / @bkietz
Related issues:
PRs and other links:
Note: This issue was originally created as ARROW-6558. Please see the migration documentation for further details.