问问题
148 次
1 回答
0
的模板参数boost::make_optional
没有在可选中准确定义类型。
此模板参数负责完美转发,这里是简单的最小示例重现问题:
#include <iostream>
template<typename T>
void bar(T&& x)
{
std::cout << __PRETTY_FUNCTION__ << " "
<< std::forward<T>(x) << '\n';
}
int foo(int x)
{
return x + 1;
}
int main()
{
int pizza = 5;
bar(pizza);
bar<int>(foo(pizza));
// bar<int>(pizza); // same error
return 0;
}
现场演示。
因此,当扣除完成时,Tint&
适用于 l 值和int
r 值。
当你传递变量时,你传递左值。
当您指定类型时,您将强制参数与int &&
不匹配int&
。
于 2021-04-02T08:59:52.287 回答