
On Thursday 07 May 2015 16:45:22 Niall Douglas wrote:
On 7 May 2015 at 7:54, Robert Ramey wrote:
So I had to update the source code to support the attributes for symbol export on those functions which need to be exported. It sounds simple, but getting this right in a way that supports both gcc and MSVC is tricky and hard to get correct. I got the gcc to build and pass all test, but now the MSVC is broken. Unfortunately, our testing system truncates the error message so I can't see why the current branch in develop fails to build. I'm still waiting from a response from the boost build team.
I have no idea why you continue to insist on trying to second guess the very well established pattern here. The design of the GCC visibility support was chosen back in 2004 to correctly support all combinations of GCC, MSVC and Mingw without any special casing, trickery, or any macro work above the traditional preprocessor logic used for MSVC.
Well, it's not that simple. For example, if you dllexport a class template and explicitly instantiate it in a dll with a non-exported type as a template parameter, you will get what you want - an exported specialization. Hidden visibility, OTOH, is viral, so the instantiated template will silently become hidden in this case. Other than that, yes, it's rather similar to MSVC.