我正在尝试在visual studio 2012中编译一个库,该库最初是为c ++中的visual studio 2015编写的。我有一个错误说' class'遗失标签。
显示编译错误的类的代码。
template <class T>
class construct
{
public:
template <class ... Args>
void operator()( Args && ... args );
T * operator->()
{
if( !itsValid )
throw Exception("Object must be initialized prior to accessing members");
return itsPtr;
}
T * ptr()
{
return operator->();
}
private:
template <class A, class B> friend struct ::cereal::memory_detail::LoadAndConstructLoadWrapper;
construct( T * p ) : itsPtr( p ), itsValid( false ) {}
construct( construct const & ) = delete;
construct & operator=( construct const & ) = delete;
T * itsPtr;
bool itsValid;
};
由于C ++编译器的版本不同,可能会出现此问题。 Visual Studio 2012使用C ++ 0x,Visual Studio 2015使用C ++ 11。
任何有关如何编译Visual Studio 2012的建议都非常感谢。
答案 0 :(得分:3)
您遇到的错误最像是在代码中使用可变参数模板的结果:http://en.cppreference.com/w/cpp/language/parameter_pack
MSDN之旅表明他们首次出现在VS 2013中:https://msdn.microsoft.com/en-us/library/dn439779(v=vs.120).aspx
如果您不得不删除语言结构以降级编译器,那么您需要进行长时间的设置。