如何解决完美转发和dll导出
我试图在我的自定义向量类上使用完美转发(在某种意义上模仿 std::vector“emplace_back”)并从它定义的 dll 中导出它。
-
repeated_ptr_field.hpp
template<typename TMessage> class RepeatedPtrField { private: std::vector<std::unique_ptr<TMessage>> v_; public: RepeatedPtrField(const RepeatedPtrField& other) = delete; RepeatedPtrField& operator=(const RepeatedPtrField& other) = delete; RepeatedPtrField(); // Some things... TMessage* Add() { // This one is ok so far v_.push_back(std::make_unique<TMessage>()); return v_.back().get(); } template <typename ...Args> TMessage* Add(Args&& ...args) { // This one is giving me headaches v_.push_back(std::make_unique<TMessage>(std::forward<Args>(args)...)); return v_.back().get(); } // Some other things... };
-
repeated_ptr_field.cpp
template __declspec(dllexport) Value* RepeatedPtrField<Value>::Add(double&&,Currency&&,long&&);
-
value.hpp
class Value : public Message { // Some things... public: // Both constructors defined in .cpp __declspec(dllexport) Value(); __declspec(dllexport) Value(double value,Currency ccy,long timestamp); // This is the constructor that should be used by the Add(args...) method. // Some other things... };
我收到编译器错误:'Value::Value':没有重载函数需要 3 个参数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。