C++20中能否为缩写函数模板指定模板化参数?
C++20缩写函数模板与概念约束的问题
现有如下C++模板函数:
template <typename T> void f(std::vector<T> v){ T a; }
尝试用C++20缩写函数模板语法改写为:
void f2(std::vector<auto x>){ T a; }
但该写法无法编译,请问有没有可编译的实现方式?
目前已有的替代方案是:
void f3(auto v){ using T = decltype(v[0]); T a; }
但需求是要为T添加Integral约束,期望的写法如下:
void f(std::vector<Integral auto T> v){ T a; }
其中Integral概念定义为:
template <typename T> concept Integral=std::is_integral<T>::value;
请问这种写法在C++20中是否可行?目前测试无法实现。
另外,是否支持将概念定义为如下形式?
concept Integral=std::is_integral<auto T>::value;
是不是语言暂未支持该特性,后续会完善?
虽然可以自定义仅允许整数类型vector的概念并用于f3,但希望无需额外定义即可实现该功能。
内容的提问来源于stack exchange,提问作者TCD
相关产品推荐
相关产品推荐

