0
4

1 回答 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 值和intr 值。

当你传递变量时,你传递左值。

当您指定类型时,您将强制参数与int &&不匹配int&

于 2021-04-02T08:59:52.287 回答