首页 > 解决方案 > 模板构造函数和复制构造函数

问题描述

为什么在下面的代码中调用模板构造函数而不是复制构造函数,当我在复制构造函数中删除'const'时,它将被调用。

#include <iostream>

struct foo{
    int a_;
    template <typename T>
    foo(T&& v) : a_{static_cast<int>(v)}
    {
    }

    foo(const foo& rhs) : a_{rhs.a_}
    {
    }

    operator std::uint8_t(){return a_;}
};


int main()
{
    foo bar1{256}, bar2{bar1};

    if(bar1.a_ == bar2.a_)
        std::cout << "hello!" << std::endl;
    return 0;
}

标签: c++c++11

解决方案


推荐阅读