我有以下代码在Visual Studio 10中工作,我想在Linux上移植它 - > GCC:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/current/public
<Directory /var/www/mydomain.com/current/public>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
picojson.h
parse( v, srcUtf8.begin(), srcUtf8.end() ); <-- ERROR
我收到此错误:
template <typename Iter> inline std::string parse(value& out, Iter& pos, const Iter& last)
{
...
}
我可以得到一些帮助吗?
答案 0 :(得分:2)
问题是函数parse
具有类型为Iter& pos
的第二个参数,它是非常量引用
template <typename Iter> inline std::string parse(value& out, Iter& pos, const Iter& last)
您不能将非const引用绑定到临时对象srcUtf8.begin()
尝试以下
auto it = srcUtf8.begin();
parse( v, it, srcUtf8.end() );
或者代替类型说明符auto
编写迭代器的显式类型。例如,如果它是类std :: string的迭代器那么
std::string::iterator it = srcUtf8.begin();
parse( v, it, srcUtf8.end() );
或者如果srcUtf8是一个常量对象,那么
std::string::const_iterator it = srcUtf8.begin();
parse( v, it, srcUtf8.end() );
对于MS VC ++ 2010,它有许多错误或它自己的语言扩展,不符合C ++标准。