I've encountered the compilation error with this program with boost-libs-1.88.0:
#include
<boost/dll/import.hpp>
#include
<boost/shared_ptr.hpp>
class API
{
public:
API() { }
};
void x() {
boost::shared_ptr<API> pluginInterface;
pluginInterface =
boost::dll::import_symbol<API>("path", "name");
}
The error:
$ c++
-std=c++20 -c s.cpp -I /usr/local/include/
s.cpp:13:21:
error: no viable overloaded '='
13 |
pluginInterface =
boost::dll::import_symbol<API>("path", "name");
|
~~~~~~~~~~~~~~~ ^
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:407:18:
note: candidate function not viable: no known conversion from
'boost::dll::detail::import_type<API>' (aka 'st
d::shared_ptr<API>') to 'const shared_ptr<API>' for
1st argument
407 |
shared_ptr & operator=( shared_ptr const & r )
noexcept
|
^ ~~~~~~~~~~~~~~~~~~~~
Compiler: clang-19, but gcc-12 fails in a similar way.
It seems that such assignment should work.
This error was originally found in the Dakota project (https://github.com/snl-dakota/dakota).
This error prevents the Dakota project from compiling.
Thanks,
Yuri