我将Xcode更新到版本9,然后构建包含Tensorflow框架的应用程序。似乎下面的代码:

#ifndef Header_h
#define Header_h
template<class T1, class T2, int I> class A {}; // primary template

template<class T1, int I, class T2> class A<T1, T2, I> {};  //error
#endif /* Header_h */

将被Xcode 9拒绝,并显示错误消息“部分模板特化不比主模板特化”。但是在Xcode 8.3.3和Visual Studio中,它是很好的。

这是原始的Tensorflow代码:(TensorStorage.h)
template<typename T, typename Dimensions, int Options_> class TensorStorage;


// Pure fixed-size storage
template<typename T, int Options_, typename FixedDimensions>
class TensorStorage<T, FixedDimensions, Options_>
{
    //implementation
};

// pure dynamic
template<typename T, int Options_, typename IndexType, int NumIndices_>
class TensorStorage<T, DSizes<IndexType, NumIndices_>, Options_>
{
    //implementation
};

谢谢

最佳答案

这给了我另一个错误信息。我发现了另一个效果很好的解决方案:

我更改了TensorStorage.h中的第34行

template<typename T, typename Dimensions, int Options_> class TensorStorage;


template<typename T, typename Dimensions, int Options_, typename empty = void> class TensorStorage;

关于c++ - Xcode 9降落在C++中建立部分模板特化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46356153/

10-13 08:16
查看更多