【问题标题】:Non-type template argument evaluates to -1, which cannot be narrowed to type 'unsigned long long' xcode 4.6非类型模板参数的计算结果为 -1,不能缩小为类型 'unsigned long long' xcode 4.6
【发布时间】:2013-01-29 12:47:08
【问题描述】:

我在我的项目中使用 zxing 和 OpenCV 库。我今天将我的 XCode 从 4.5 更新到 4.6,我收到了这个错误。

externalLibs/boost/include/boost/gil/channel_algorithm.hpp:54:85:非类型模板参数的计算结果为 -1,不能将其缩小为类型 'unsigned long long'

并且这个错误出现在 OpenCV 库的一个类中的这一行代码上:-

struct unsigned_integral_max_value : public mpl::
integral_c< UnsignedIntegralChannel,-1> {};

在早期版本的 Xcode 上,它工作正常。

提前致谢。

【问题讨论】:

  • 你的问题是什么?这是一个声明;)

标签: ios opencv zxing xcode4.6


【解决方案1】:

似乎 boost 不喜欢新的 clang 编译器添加的 c++ 11 支持

所以.. 它说在构建设置中禁用 c++ 11 支持

= src:见https://svn.boost.org/trac/boost/ticket/7270

【讨论】:

    【解决方案2】:

    unsigned long long 变量的最大值为十六进制 0xFFFFFFFF FFFFFFFF,即所有位均为 1。如果解释为有符号数,则对应于 -1。所以程序员经常使用 -1 来代替,希望编译器不会抱怨。显然,这在 XCode 4.5 中并没有发生,但 4.6 做了更严格的检查...

    【讨论】:

      【解决方案3】:

      在 macOS Sierra 上使用 Apple LLVM version 8.1.0 (clang-802.0.42)-std=c++11 编译时遇到了同样的错误。为了解决这个问题,我加入了以下编译器标志:-Wno-error=c++11-narrowing

      【讨论】:

        猜你喜欢
        • 2014-01-28
        • 2021-01-11
        • 1970-01-01
        • 2013-08-21
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        相关资源
        最近更新 更多