5 #include <boost/lexical_cast.hpp>
12 template<typename T, typename C>
13 typename std::enable_if<!std::is_convertible<T, std::wstring>::value, typename std::decay<T>::type>::type get_param(const std::wstring& name, C&& params, T fail_value = T())
15 auto it = std::find(std::begin(params), std::end(params), name);
16 if(it == params.end())
21 if(++it == params.end())
22 throw std::out_of_range("");
24 return boost::lexical_cast<std::decay<T>::type>(*it);
28 CASPAR_THROW_EXCEPTION(invalid_argument() << msg_info("Failed to parse param.") << arg_name_info(name) << nested_exception(std::current_exception()));
33 std::wstring get_param(const std::wstring& name, C&& params, const std::wstring& fail_value = L"")
35 auto it = std::find(std::begin(params), std::end(params), name);
36 if(it == params.end())
41 if(++it == params.end())
42 throw std::out_of_range("");
48 CASPAR_THROW_EXCEPTION(invalid_argument() << msg_info("Failed to parse param.") << arg_name_info(name) << nested_exception(std::current_exception()));