Open ralfkonrad opened 2 hours ago
It is obvious, that the guards QL_DEPRECATED_DISABLE_WARNING
and QL_DEPRECATED_ENABLE_WARNING
are not being picked up. But I don't understand why.
The error message is different when I use QL_USE_STD_SHARED_PTR=ON
and std::shared_ptr
, but the result is the same:
> cmake --build --preset release -j 12 -- -k 0
[38/1149] Building CXX object ql/CMakeFiles/ql_library.dir/currency.cpp.o
FAILED: ql/CMakeFiles/ql_library.dir/currency.cpp.o
ccache /usr/bin/clang++ -DBOOST_ALL_NO_LIB -DQL_COMPILATION -Dql_library_EXPORTS -I/home/ralfkonrad/dev/cpp/quantlib.rke/build/release -I/home/ralfkonrad/dev/cpp/quantlib.rke -isystem /home/linuxbrew/.linuxbrew/include -O3 -DNDEBUG -std=c++17 -fPIC -Wall -Wno-unknown-pragmas -Werror -MD -MT ql/CMakeFiles/ql_library.dir/currency.cpp.o -MF ql/CMakeFiles/ql_library.dir/currency.cpp.o.d -o ql/CMakeFiles/ql_library.dir/currency.cpp.o -c /home/ralfkonrad/dev/cpp/quantlib.rke/ql/currency.cpp
In file included from /home/ralfkonrad/dev/cpp/quantlib.rke/ql/currency.cpp:20:
In file included from /home/ralfkonrad/dev/cpp/quantlib.rke/ql/currency.hpp:29:
In file included from /home/ralfkonrad/dev/cpp/quantlib.rke/ql/errors.hpp:29:
In file included from /home/ralfkonrad/dev/cpp/quantlib.rke/ql/shared_ptr.hpp:30:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/memory:66:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tempbuf.h:61:
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:119:25: error: 'Data' is deprecated [-Werror,-Wdeprecated-declarations]
119 | ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/alloc_traits.h:661:9: note: in instantiation of function template specialization 'std::_Construct<QuantLib::Currency::Data, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
661 | { std::_Construct(__p, std::forward<_Args>(__args)...); }
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:604:30: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::construct<QuantLib::Currency::Data, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
604 | allocator_traits<_Alloc>::construct(__a, _M_ptr(),
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:972:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<QuantLib::Currency::Data, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
972 | _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:1712:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<QuantLib::Currency::Data, std::allocator<void>, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
1712 | : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr.h:464:4: note: in instantiation of function template specialization 'std::__shared_ptr<QuantLib::Currency::Data>::__shared_ptr<std::allocator<void>, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
464 | : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr.h:1009:14: note: in instantiation of function template specialization 'std::shared_ptr<QuantLib::Currency::Data>::shared_ptr<std::allocator<void>, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
1009 | return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
| ^
/home/ralfkonrad/dev/cpp/quantlib.rke/ql/currency.cpp:92:18: note: in instantiation of function template specialization 'std::make_shared<QuantLib::Currency::Data, const std::basic_string<char> &, const std::basic_string<char> &, int &, const std::basic_string<char> &, const std::basic_string<char> &, int &, const QuantLib::Rounding &, const std::basic_string<char> &, const QuantLib::Currency &, const std::set<std::basic_string<char>> &>' requested here
92 | : data_(ext::make_shared<Currency::Data>(name,
| ^
/home/ralfkonrad/dev/cpp/quantlib.rke/ql/currency.hpp:142:9: note: 'Data' has been explicitly marked deprecated here
142 | QL_DEPRECATED
| ^
/home/ralfkonrad/dev/cpp/quantlib.rke/build/release/ql/qldefines.hpp:201:42: note: expanded from macro 'QL_DEPRECATED'
201 | # define QL_DEPRECATED __attribute__((deprecated))
| ^
1 error generated.
But what does work for both boost::shared_ptr
and std::shared_ptr
is changing from ext::make_shared<Currency::Data>(...)
to the good old ext::shared_ptr<Currency::Data>(new Currency::Data(...)
.
Currency::Currency(const std::string& name,
const std::string& code,
Integer numericCode,
const std::string& symbol,
const std::string& fractionSymbol,
Integer fractionsPerUnit,
const Rounding& rounding,
const std::string& formatString,
const Currency& triangulationCurrency,
const std::set<std::string>& minorUnitCodes)
: data_(ext::shared_ptr<Currency::Data>(new Currency::Data(name,
code,
numericCode,
symbol,
fractionSymbol,
fractionsPerUnit,
rounding,
formatString,
triangulationCurrency,
minorUnitCodes))) {}
When trying to build the latest version I run into the following error:
I tried #2078 but that doesn't help.
Also, the same works well with
g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0
.