我有以下代码:
class IConfigItem
{
public:
virtual ~IConfigItem() {};
virtual operator int() const { return 0; }
virtual operator std::string () const { return std::string(); }
};
template< typename T > class ConfigItem : public IConfigItem
{
private:
T m_value;
public:
ConfigItem< T >(const T& valueIn = 0) : m_value(valueIn) {}
operator T() const
{
return m_value;
}
};
template< typename T, typename ...Args > std::unique_ptr< T > makeUnique(Args&& ...args)
{
return std::unique_ptr< T >(new T(std::forward< Args >(args)...));
}
我收到以下错误:
Error 1 error C2143: syntax error : missing ',' before '...'
我不明白为什么。为什么它不能识别 ...
?我究竟做错了什么?我在 Ubuntu 上有相同的代码,并且运行良好,现在我已将其复制到 VS2012,但它有错误。请有人帮助我。
最佳答案
为此,您需要 Visual Studio 2013,请参阅 Visual Studio c++11 功能支持页面中的 Variadic 模板:http://msdn.microsoft.com/en-us/library/hh567368.aspx
Visual Studio 2013 的社区版本可在此处获得: http://visualstudio.com/en-us/downloads
关于C++ 不识别 3points 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617093/