如果我有這樣的類模板:
template<typename T, size_t N>
struct foo
{
template<std::same_as<T>... Ts>
foo(Ts... ts);
}
有什么方法可以N從傳遞給foo建構式的引數包的大小中推斷出模板引數?所以foo可以像這樣實體化:
auto f = foo(10,10,10); // foo<int, 3>
還是根本不可能?有沒有繞過不得不打字foo<int, 3>(10,10,10)?
uj5u.com熱心網友回復:
是的,這方面的扣除指南很簡單:
template<typename T, typename... Ts>
requires (std::same_as<T, Ts> && ...) // optional
foo(T, Ts...) -> foo<T, sizeof...(Ts) 1>;
或者
template<typename T, std::same_as<T>... Ts>
foo(T, Ts...) -> foo<T, sizeof...(Ts) 1>;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/508183.html
上一篇:推導模板值引數的型別
下一篇:模板化類中的成員變數
