尝试使用类似下面的内容与char数组,但它不编译.但是short []的例子很好用.知道为什么吗?:)
char someChars[] = {'s','h','e','r','r','y'};
BOOST_FOREACH(char& currentChar, someChars)
{
}
short array_short[] = { 1, 2, 3 };
BOOST_FOREACH( short & i, array_short )
{
++i;
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 17
如果您转到该行<boost/foreach.hpp>引发编译错误,您将看到以下注释:
// **** READ THIS IF YOUR COMPILE BREAKS HERE ****
//
// There is an ambiguity about how to iterate over arrays of char and wchar_t.
// Should the last array element be treated as a null terminator to be skipped, or
// is it just like any other element in the array? To fix the problem, you must
// say which behavior you want.
//
// To treat the container as a null-terminated string, merely cast it to a
// char const *, as in BOOST_FOREACH( char ch, (char const *)"hello" ) ...
//
// To treat the container as an array, use boost::as_array() in <boost/range/as_array.hpp>,
// as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ...
Run Code Online (Sandbox Code Playgroud)
使用boost::as_array(someChars)注释中显示的应修复编译错误.
| 归档时间: |
|
| 查看次数: |
2179 次 |
| 最近记录: |