我想要一个只有 1 个参数的函数,该参数对于泛型类型是可选的,并且已指定 boost::none
作为默认值。这可能吗?
#include <iostream>
#include <string>
#include <boost/optional.hpp>
template <typename T>
void f(boost::optional<T> v = boost::none)
{
if (v)
{
std::cout<<"v has value: " << v.get();
}
else
{
std::cout<<"v has no value!";
}
}
int main()
{
f(12);
f("string");
return 0;
}
最佳答案
是的,这是可能的,但它不能与模板推导一起使用( f(12)
将尝试实例化 f<int&&>
,它不存在)。当您这样调用时,您的代码将编译:
f(boost::optional<int>{12});
或显式实例化它:
f<int>(12);
关于c++ - 模板函数中具有单个可选参数和默认值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71235171/