gpt4 book ai didi

c++ - 在模板参数列表中转发声明类型名

转载 作者:太空狗 更新时间:2023-10-29 19:45:14 27 4
gpt4 key购买 nike

我有一个具有以下签名的函数:

template<typename Container, auto First = 0, auto Last = Container::size()>
doSomething(const Container& containter){...}

有没有一种方法可以重新排序模板参数,这样我就可以像这样调用函数:

doSomething<3,5>(someContainer);

而不是必须这样做:

doSomething<decltype(someContainer), 3,5>(someContainer);

如果我可以将 someCountainer 移到 Last 之后,这就不是问题了,但是 Last 的默认值是从 容器。有没有一种方法可以在模板参数列表中转发声明 Container,或者任何实际上可以让我避免每次都必须添加 decltype(...) 的功能?

最佳答案

一种方法是重载:

template<auto First, auto Last, typename Container>
void doSomething(const Container& containter);

template<auto First, typename Container>
void doSomething(const Container& containter) {
doSomething<First, Container::size()>(containter);
}

template<typename Container>
void doSomething(const Container& containter) {
doSomething<0, Container::size()>(containter);
}

关于c++ - 在模板参数列表中转发声明类型名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com