gpt4 book ai didi

c++ - 使用显式非类型参数和隐式类型参数调用模板函数

转载 作者:行者123 更新时间:2023-11-30 02:28:19 25 4
gpt4 key购买 nike

我想创建一个模板函数,它既有类型模板参数,可以从传递给函数的参数中推导出来,也有非类型模板参数,它们将被显式放置。编译器似乎可以推断出每种类型是什么,但如果我指定非类型模板参数,它需要所有模板参数。我可以只指定非类型模板参数,还是全有或全无?

#include <iostream>
#include <typeinfo>

template <typename T, bool bPrint=true>
void f(T var) {
if (bPrint)
std::cout << typeid(var).name() << std::endl;
}

int main() {
f(3); //works
f<false>(3); //error: template argument deduction/substitution failed
}

最佳答案

可以,但是推导的模板参数需要位于参数列表的末尾。您可以通过重新排序函数模板的参数来编译代码:

template < bool bPrint=true, typename T>
void f(T var) {
if (bPrint)
std::cout << typeid(var).name() << std::endl;
}

demo

关于c++ - 使用显式非类型参数和隐式类型参数调用模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40874065/

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