2014-12-24 5 views
0

У меня есть простой код:Ide сообщений об ошибке, хотя программа работает

#include <iostream> 
#include <boost/variant.hpp> 
using namespace std; 

template <typename Arg, typename... Args> 
auto WhichParametr(unsigned int n, Arg arg, Args... args) -> boost::variant < Arg, Args... > { 
    if (n != 1) 
     return WhichParametr(n - 1, args...); 
    return arg; 
} 

template <typename T> 
T WhichParametr(unsigned int n, T arg){ 
    return arg; 
} 

int main(){ 
    cout << WhichParametr(4, 1, 2, '3', "foo"); 
    cin.get(); 
    cin.get(); 
    return 0; 
} 

функция WhichParametr() возвращает п Parametr, который был дан (WhichParametr (1, 2, 3) возвращает 2). Моя IDE Visual Studio 2013 говорит, что нет перегрузки, которая соответствует списку аргументов, жесткая программа работает нормально. Есть ли что-то в этом коде, которое я не должен использовать или это просто глупая среда? Заранее спасибо.

ответ

1

Это глупое Intellisense. Он не совпадает с поддержкой C++ 11 самого компилятора.

Смотрите также

+0

Спасибо! Теперь я теперь безопасно использовать –

+0

Предоставлено ребятами из EDG. Они никогда не ошибались. –

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