首页 > 解决方案 > 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

标签: c++if-statement

解决方案


尝试添加:

set(CMAKE_CXX_STANDARD_REQUIRED ON)

到你的CMakeLists.txt. 它确保您使用 C++17 进行编译,并且不会衰减到以前版本的编译器。


推荐阅读