【发布时间】:2021-08-23 20:03:19
【问题描述】:
考虑以下代码:
#include <optional>
#include <string_view>
int main() {
std::optional<std::string_view> opt { "abc" };
std::cout << opt.value();
return 0;
}
它编译并在运行时向控制台输出“abc”。为什么会编译? main 中的第一行代码应该是:
std::optional<std::string_view> { std::string_view { "abc" } };
编译器如何知道使用字面量调用 string_view 构造函数?这似乎不仅仅是我以前见过的类型推断。在这里,编译器似乎正在向我的源代码添加代码,即调用构造函数。
【问题讨论】:
标签: c++ local auto type-deduction