将GCC 4.8.4与g++ --std=c++11 main.cpp一起使用将输出以下error

error: unable to deduce ‘auto’ from ‘max<int>’
auto stdMaxInt = std::max<int>;

对于此代码
#include <algorithm>

template<class T>
const T& myMax(const T& a, const T& b)
{
    return (a < b) ? b : a;
}

int main()
{
    auto myMaxInt = myMax<int>;
    myMaxInt(1, 2);

    auto stdMaxInt = std::max<int>;
    stdMaxInt(1, 2);
}

为什么它适用于myMax而不适用于std::max?我们可以使其与std::max一起使用吗?

最佳答案

这是因为std::max是一个重载函数,因此它不知道要创建指向哪个重载的指针。您可以使用static_cast选择所需的重载。

auto stdMaxInt = static_cast<const int&(*)(const int&, const int&)>(std::max<int>);

关于c++ - 自动stdMaxInt = std::max <int>的类型推导失败;,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33706078/

10-09 00:23