gpt4 book ai didi

c++ - template void operator()( Args && ... args ) 显示编译错误 "Class"缺少标记

转载 作者:行者123 更新时间:2023-11-27 23:57:02 31 4
gpt4 key购买 nike

我试图在 visual studio 2012 中编译一个库,它最初是用 c++ 为 visual studio 2015 编写的。我有一个错误说 'class' missing tag

错误消息的屏幕截图 enter image description here

显示编译错误的类的代码。

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 的建议。

最佳答案

您遇到的错误很像在您的代码中使用可变参数模板的结果:http://en.cppreference.com/w/cpp/language/parameter_pack

访问 MSDN 表明它们首先出现在 VS 2013 中:https://msdn.microsoft.com/en-us/library/dn439779(v=vs.120).aspx

如果您必须去除语言结构以降级编译器,那么您就是在为自己做长期准备。

关于c++ - template <class ... Args> void operator()( Args && ... args ) 显示编译错误 "Class"缺少标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904355/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com