我想宣告一個類似于以下內容的函式:
string concat(const range<string> auto& strings);
我通過以下方式實作了相同的目標:
template <template <typename> typename T> requires range<T<string>>
string concat(const T<string>& strings);
但這對我來說太過龐大和重復,無法考慮使用。
有更干凈的方法嗎?
我認為沒有,因為型別概念要求第一個模板引數是常規型別名,這使得無法為其提供模板引數串列。
如果確實不可能,是否有任何計劃來彌補這個明顯的缺陷?如果沒有,是否有任何理由說明為什么這可能會導致指定/實施很麻煩?
uj5u.com熱心網友回復:
也許是這樣的:
template <class R, class T>
concept range_of = std::ranges::range<R> &&
std::same_as<std::ranges::range_value_t<R>, T>;
static_assert(range_of<std::vector<int>, int>);
static_assert(range_of<decltype(std::declval<std::vector<int>&>() |
std::views::all),
int>);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372500.html
上一篇:關閉前鍵盤中斷向終端添加數字
