【发布时间】:2019-11-25 12:12:51
【问题描述】:
在查看basic_string_view 的引用时,似乎缺少从std::basic_string 构造的(显式)推导指南——巧合与否,似乎为指针类型生成了隐式推导指南(@ 987654325@和const wchar_t*)
目前我在模板中采用以下 trick,该模板应该只接受任何可以卡在 string view 上的东西:
using CharIn = decltype(std::basic_string(str_in))::value_type;//basicly: char or wchar_t
std::basic_string_view<CharIn> str = str_in;
我宁愿只写:
std::basic_string_view str = str_in;//<--using deduction guide (currently does not work for basic_string)
我想知道这是否被考虑过?
【问题讨论】:
-
这可能是相对安全的:右值
basic_strings 绑定到const basic_string &并创建一个悬空视图。 (原始)字符串文字不会悬空。 -
@Caleth 如果我正确理解你的论点,它就站不住脚:foonathan.net/2017/03/string_view-temporary
-
@rustyx 是的,你可以毫不费力地从
string构造一个string_view。我猜只是模板案例似乎缺少演绎指南? -
这里的问题和
template <CharT> void foo(std::basic_string_view<CharT>)类似,CharT没有推导出来 -
“巧合的是,似乎生成了隐式演绎指南..”——这并非巧合。
标签: c++ language-lawyer c++17 template-meta-programming string-view