我从cppreference.com窃取了以下代码片段
并将其用于以下用途wchar_t:
#include <string>
#include <iostream>
#include <sstream>
template <typename T>
struct test_seq {};
template <>
struct test_seq<char> {
std::string operator()() {
return "1\n2\n3\n4\n5\n6\n7\n";
}
};
template <>
struct test_seq<wchar_t> {
std::wstring operator()() {
return L"1\n2\n3\n4\n5\n6\n7\n";
}
};
int main(int, char **) {
using char_t = wchar_t;
std::basic_istringstream<char_t> input;
test_seq<char_t> seq;
input.str(seq());
int sum = 0;
for (std::basic_string<char_t> token; std::getline(input, token);) {
sum += std::stoi(token);
}
std::cout << "The sum is: " << sum << "\n"; …Run Code Online (Sandbox Code Playgroud) 我想使用 C++17std::optional但它似乎在 clang 中不存在:
> cat test.cxx
#include <optional>
int main(int, char **) {
return 0;
}
> $CXX --version | head -n1
clang version 6.0.0 (trunk 317775)
> $CXX -std=c++17 test.cxx
test.cxx:1:10: fatal error: 'optional' file not found
#include <optional>
^~~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我使用的是一个相当新版本的 clang,据我所知,clang 6 应该具有完整的 C++17 支持。乍一看,这似乎是一个 clang 问题,特别是因为包含<experimental/optional>工作正常,但也许是我遗漏了一些东西。你有什么想法?
谢谢