我试图使用clang编译以下代码但得到以下错误.
我想知道为什么sort从list课堂上使用会有效,但不是std::sort.
#include <list>
#include <iostream>
int main(){
std::string strings[] = {"hello", "nihao", "byebye", "yo"};
std::list<std::string> cars(strings, strings+sizeof(strings) / sizeof(char **));
// cars.sort(std::less<std::string>()); // compiles fine and produce a sorted list
std::sort(cars.rbegin(), cars.rend(), std::less<std::string>() ); // this one won't compile
for (std::list<std::string>::iterator it = cars.begin(); it != cars.end(); ++it)
std::cout << *it << " - ";
std::cout << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
/usr/include/c++/4.2.1/bits/stl_iterator.h:320:25:错误:二进制表达式的操作数无效('iterator_type'(又名'std :: _ List_iterator>')和'iterator_type'){return __y .base() - __ x.base(); }
我正在尝试使用CMake Generated Xcode项目.构建时一切看起来都很好,除了Xcode找不到构建的二进制文件.下面是我成功构建产品后的截图.我可以在项目源目录中看到它们.但是,请注意Xcode显示RED"HelloWorld",这意味着它无法找到产品.

配置:在Lion 10.7.2上使用Xcode 4.2进行CMake 2.8.6
这是CMakeLists.txt
project(HelloWorld)
add_executable(${PROJECT_NAME} HelloWorld.cpp)
Run Code Online (Sandbox Code Playgroud)
这是HelloWorld.cpp的源代码
#include <iostream>
int main(){
std::cout << "HelloWorld!" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我试图直接从Xcode创建一个原始项目,编译后,产品显示黑色而不是红色字体,这意味着Xcode找到了产品.所以我相信这与CMake Generated Xcode项目有关.
有人有任何想法吗?怎么解决这个问题?
我不知道是否有人能为我解释这段代码?
unsigned int x = 0;
(x ^= x ) || x++ || ++x || x++;
printf("%d\n", x);
Run Code Online (Sandbox Code Playgroud)
当我使用gcc 4.2在我的计算机上编译它时,输出为2.
最初我想也许这个行为是未指定的,但后来我想|| 将优先于其他运营商,所以答案不应该是3吗?由于有三个"++".
谁能解释一下?谢谢