[问题] explicit instantiation的问题

楼主: ialk (没有灵感..)   2016-08-16 10:35:10
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
MSVC14
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
原本的code是一个负责传递文字讯息class收到std::string或std::wstring之后
将文字讯息传递出去
所以在.h里面宣告了
void send_message(const std::string& msg);
void send_message(const std::wstring& msg);
我想将这个function改写成template 所以我写了
template<typename T>
void send_message_t(const T&& msg);
在cpp里做explicit instantiation
template void MyClass::send_message_t<std::string>(const std::string&&);
template void MyClass::send_message_t<std::wstring>(const std::wstring&&);
原有的function由于const char[]会implicit conversion成std::string所以当呼叫
send_message("message"); 的时候是没有问题的
但是由于我做了explicit instantiation
目前只能写成 send_message_t(std::string("message"));
我想我应该将const char[]也做explicit instantiation 可是不知道该怎么写..
有说错的地方请指教 谢谢
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
cannot convert argument 1 from const char[8] to const char(&&)[8];
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: CaptainH (Cannon)   2016-08-16 11:05:00
const r-ref ...你确定?
楼主: ialk (没有灵感..)   2016-08-16 11:16:00
不太理解.. 抱歉0.0我拿掉const了 不过还是有link error 请问该怎么实例化
作者: Caesar08 (Caesar)   2016-08-16 13:09:00
看到template<class T>...(const T&&),通常是写错了
楼主: ialk (没有灵感..)   2016-08-16 13:46:00
好的 我会再好好研读这部分
作者: bluesoul (忙死你老爸)   2016-08-16 19:21:00
有试过const char *吗?
楼主: ialk (没有灵感..)   2016-08-16 20:04:00
有的..可是我不知道怎么改.. ((抱头
作者: bluesoul (忙死你老爸)   2016-08-16 20:56:00
应该是你误用了&&,改成&看看
楼主: ialk (没有灵感..)   2016-08-17 10:39:00
可是改成 void send_message_t(const T& msg);我该怎么..实例化那个..const char*

Links booklink

Contact Us: admin [ a t ] ucptt.com