根据this和CMake 3.28,我们应该能够import std
无需任何额外的努力。但我在下面的简单演示中遇到了错误Module 'std' not found
。
import std;
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
cmake_minimum_required(VERSION 3.28)
project(module_tst)
set(CMAKE_CXX_STANDARD 23)
add_executable(demo)
target_sources(demo
PRIVATE
main.cpp
)
Run Code Online (Sandbox Code Playgroud)
import std
只要我检查了C/C++ -> General -> Scan Sources for Module Dependencies
. 我在 cmake 文档中发现了类似的内容,CXX_SCAN_FOR_MODULES
但将其设置为没有任何区别。有什么遗漏吗?
我正在使用最新的 cmake 3.28 rc1 和 VS 17.8.0 Preview 4.0
auto queue = [](string str) {
istringstream ss(str);
//std::copy(std::istream_iterator<string>(ss),
// std::istream_iterator<string>(),
// std::ostream_iterator<string>(std::cout, " "));
//deque<string> q(std::istream_iterator<string>(ss), std::istream_iterator<string>{});
deque<string> q(std::istream_iterator<string>(ss), std::istream_iterator<string>());
return q;
};
Run Code Online (Sandbox Code Playgroud)
为什么编译器会抱怨
括号作为函数声明已消除歧义 [-Wveshing-parse]
如果我用 构建一个容器istream_iterator<string>()
。
和容器构造函数中的参数有什么区别吗std::copy
?