You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:38:11