g ++:错误:'pow'没有依赖于模板参数的参数,因此'pow'的声明必须可用[-fpermissive]

时间:2012-06-14 18:19:02

标签: c++ templates casting g++ type-conversion

此代码在Windows上的Visual Studio 2010上正确编译,但我在Linux,g ++上收到此错误。有人可以解释一下如何解决这个问题吗?

int bits;
T scale;
std::vector<U> TwoPowers;
U cropper;

template <typename T, typename U>
ConvertToBits<T,U>::ConvertToBits(int bits, T scale)
{
    this->bits = bits;
    this->scale = scale;
    for(long i = 0; i < 64; i++)
    {
        TwoPowers.push_back(static_cast<U>(pow(2.,i))); //error appears here
    }
    cropper = 0;
    for(int i = 0; i < bits; i++)
    {
        cropper += TwoPowers[i];
    }
}

错误讯息:

错误:“pow”没有依赖于模板参数的参数,因此'pow'的声明必须可用[-fpermissive]

谢谢。

1 个答案:

答案 0 :(得分:4)

您需要#include <cmath>并在数学库中使用-lm进行链接(在某些系统上)。