我有一个带有以下签名的函数:
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
中派生出来的。是否有一种方法可以在模板参数列表中前向声明Container
,或者有任何功能可以使我避免每次都添加decltype(...)
呢?
First
和Last
的模板参数是正确的选择,而不是例如带有默认值的普通函数参数吗? - Some programmer dudeauto
在这种情况下是标准C++。 - Cruz Jeandecltype(Container::size()) First
,但我决定放松它,因为如果对于放松的问题没有解决方案,那么对于带有decltype
的问题也不会有解决方案,这就是我想到的。 - lightxbulb