20 Aug
2018
20 Aug
'18
7:37 a.m.
On Sun, Aug 19, 2018 at 10:57 PM, Andrey Semashev via Boost
I solved this in Boost.Log this way:
struct Y { void f( X const& x );
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
void f( X&& x ) { f_move(x); }
#endif
private: void f_move(X& x); };
Only works if void f( X&& x ) is inlined and even then it still violates ODR doesn't it?
As a slightly different variant of the Boost.System2 solution, I can suggest building multiple Boost.System binaries, one per ABI we can support.
That'd require library name mangling on Linux and adding the std level to the name.. -- Olaf