#include <iostream>
#include <vector>
using namespace std;
template <typename Q> std::wstring ToString(const Q& q) {
return L"Original";
}
template<typename E> std::wstring ToString(const std::vector<E>& t) {
return L"overload";
}
int main() {
vector<int> v = {1, 3};
int i = 1;
cout << ToString(v) << endl;
cout << ToString(i) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFE+IHN0ZDo6d3N0cmluZyBUb1N0cmluZyhjb25zdCBRJiBxKSB7CglyZXR1cm4gTCJPcmlnaW5hbCI7Cn0KdGVtcGxhdGU8dHlwZW5hbWUgRT4gc3RkOjp3c3RyaW5nIFRvU3RyaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPEU+JiB0KSB7CglyZXR1cm4gTCJvdmVybG9hZCI7Cn0KCmludCBtYWluKCkgewoJdmVjdG9yPGludD4gdiA9IHsxLCAzfTsKCWludCBpID0gMTsKCWNvdXQgPDwgVG9TdHJpbmcodikgPDwgZW5kbDsKCWNvdXQgPDwgVG9TdHJpbmcoaSkgPDwgZW5kbDsKCXJldHVybiAwOwp9
prog.cpp: In function 'int main()':
prog.cpp:15:20: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
cout << ToString(v) << endl;
^
In file included from /usr/include/c++/4.9/iostream:39:0,
from prog.cpp:1:
/usr/include/c++/4.9/ostream:602:5: note: initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = std::basic_string<wchar_t>]'
operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
^
prog.cpp:16:20: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
cout << ToString(i) << endl;
^
In file included from /usr/include/c++/4.9/iostream:39:0,
from prog.cpp:1:
/usr/include/c++/4.9/ostream:602:5: note: initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = std::basic_string<wchar_t>]'
operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
^