2017-01-23 18 views
0

С MapBox :: вариант (https://github.com/mapbox/variant/blob/master/include/mapbox/variant.hpp), я могу сделать следующее:Как получить MapBox :: Util :: значение вариант в шаблонных функции

using variant = mapbox::util::variant<Args...>; 
variant<std::string> v; 
// do something with v 
... 
// Get string from v: 
std::string s = v.get<std::string>(); 

Но когда я пытаюсь осуществить это с помощью шаблона функция, я получил ошибку компиляции:

template <typename T> 
T getValue() 
{ 
    variant<T> value{}; 
    // Get value 
    ... 
    return value.get<T>(); 
} 

GCC жалуется:

../utils.hpp:52:23: error: expected primary-expression before '>' token return value.get(); ^../utils.hpp:52:25: error: expected primary-expression before ')' token return value.get();

Что с шаблоном функц ион?

+0

делает value.template получить (); Помогите? –

+0

Woops, да, это помогает. Пожалуйста, разместите его как ответ, чтобы я мог отметить его правильно. – Mine

ответ

1

Я думаю, что вы хотите:

return value.template get<T>(); 

this ответ дает хорошее/полное описание, почему ...