Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参考包装<;字符串>;不以cout打印,但参考包装<;int>;做_C++_Templates_Reference Wrapper - Fatal编程技术网

C++ 参考包装<;字符串>;不以cout打印,但参考包装<;int>;做

C++ 参考包装<;字符串>;不以cout打印,但参考包装<;int>;做,c++,templates,reference-wrapper,C++,Templates,Reference Wrapper,为什么我试图打印“字符串的引用包装器”的行为不支持的运算符给出错误是函数模板,当传递引用包装器时,无法推断最后一个模板参数分配器;因为隐式转换在中不会被考虑 类型演绎不考虑隐式转换(除了上面列出的类型调整):这是以后发生的工作。 作为解决方法,您可以显式调用或执行显式转换 另一方面,是非模板的,则不存在这样的问题 int main(){ int s= 43; string str = "hello"; reference_wrapper<int> x{s

为什么我试图打印“字符串的引用包装器”的行为不支持的运算符给出错误是函数模板,当传递
引用包装器时,无法推断最后一个模板参数
分配器
;因为隐式转换在中不会被考虑

类型演绎不考虑隐式转换(除了上面列出的类型调整):这是以后发生的工作。

作为解决方法,您可以显式调用或执行显式转换

另一方面,是非模板的,则不存在这样的问题

int main(){

    int  s= 43;
    string str = "hello";

    reference_wrapper<int> x{s};
    reference_wrapper<string> y{str};

    x.get() = 47;
    y.get() = "there";

    cout<<"printing original int "<<s<<"\n";
    cout<<"printing original string "<<str<<"\n";

    cout<<"printing reference_wrapper for int "<<x<<"\n";
    cout<<"printing reference_wrapper for string "<<y<<"\n"; // gives error

    int& refint = x;
    string& refstr = y;

    cout<<"printing reference for int "<<refint<<"\n";
    cout<<"printing reference for string "<<refstr<<"\n";
}