c++ - C++ if 初始化器
问题描述
cmake_minimum_required(VERSION 3.16)
project(competitive_programming)
set(CMAKE_CXX_STANDARD 17)
add_executable(competitive_programming main.cpp)
如您所见,我使用的是 C++ 17,并且我想使用if 初始化程序来保持代码整洁,
if (auto result = right.find(second); result != right.end()){
result->second--;
}
但是编译器不能按预期工作,
读数如下:
error: expected ')' before ';' token
if (auto result = right.find(item); result == right.end()){error: expected ')' before ';' token
if (auto result = right.find(item); result == right.end()){
我的编译器是这样的,我猜:
g++ (x86_64-posix-seh, Built by strawberryperl.com project) 8.3.0
解决方案
尝试添加:
set(CMAKE_CXX_STANDARD_REQUIRED ON)
到你的CMakeLists.txt
. 它确保您使用 C++17 进行编译,并且不会衰减到以前版本的编译器。
推荐阅读
- c# - 无法在c#中的网络目录上打开SQLiteConnection
- java - 如何在 Primefaces/JSF 中有条件地禁用 rowToggler
- c# - 为什么 PartialViewResult 的 Razor 页面处理程序返回类型的单元测试失败?
- docker - 在 Intellij 的 Docker 容器上开发
- json - 需要帮助用 jq 解析 json 输出
- c++ - 根据收到的键调用适当的函数
- html - Web Scraping:如何从 HTML 片段中提取 href?
- python - 找不到可以处理输入的数据适配器:tensorflow.python.data.ops.dataset_ops.FlatMapDataset
- r - 用于从数据集中分离电影流派列的 R 代码
- reactjs - React useEffect 不会将参数获取到 React useState