C++ 不识别 3points 运算符

标签 c++ visual-studio

我有以下代码:

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/

相关文章:

c# - VS2017 无法启动调试。无法加载文件或程序集

c++ - SFML loadFromFile 未定义引用

c++ - 有什么方法可以转储 g++ 编译程序的类布局

c# - 配置 MSBuild 以启动 PowerShell 并运行 Import-Module $(TargetFileName)

sql-server - : OPTIMIZE_FOR_SEQUENTIAL_KEY 处的语法错误

visual-studio - 如何更改调试器设置以从 VS 2015 测试资源管理器调试单个单元测试

C++ DLL接口(interface)和内存

c++ - 无法在 lambda 中捕获静态变量

c++ - gcc 是否支持宏定义中的多行原始字符串文字?

c# - MonoDevelop无法导入VS2013/2015的解决办法