2015-02-19 3 views
1
3 очков

У меня есть следующий код:C++ не распознает оператор

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, и он имеет ошибки. Пожалуйста, помогите мне.

+3

VS2012 Безразлично» t suppport Variadic template, который является C++ 11. https://msdn.microsoft.com/en-us/library/hh567368(v=vs.110).aspx –

+0

Для этого вам нужен VS2013. Шаблоны Variadic: https://msdn.microsoft.com/en-us/ library/hh567368.aspx – drescherjm

+0

'...' вычисляется эллипсис, для дальнейшей информации. –

ответ

Смежные вопросы