C ++ - 递归类型或函数依赖性太复杂

时间:2015-05-12 10:03:04

标签: c++ templates

我尝试编译相同的代码,但是我使用g ++成功并且在使用msvc12时失败了。这是代码:

template <typename T>
struct kernel_type
{
    typedef T ret;
};


template <typename TAG, typename A, typename B, unsigned OFFSET = 0>
struct binary_op_
{
    typedef typename kernel_type<A>::ret a1;
    enum
    {
        offset_a1 = 16 - ((16 - 1 + OFFSET) % 16) - 1,
        offset_a2 = 16 - ((16 - 1 + (OFFSET + offset_a1 + sizeof(a1))) % 16) - 1
    };
};

offset_a2表达式中offset_a1引起的错误,msvc12编译器无法导出offset_a1表达式。如果我用其完整表达式替换offset_a1,则错误是固定的。任何人都知道这里发生了什么,或者我错过了更改msvc12中的任何设置?

0 个答案:

没有答案