template<typename T>
typename TypeInfo<T>::Load get(unsigned i) const
{
- return extract<typename TypeInfo<T>::Store>(store+info.arg_offsets[i], info.key.signature[i]);
+ return static_cast<typename TypeInfo<T>::Load>(extract<typename TypeInfo<T>::Store>(store+info.arg_offsets[i], info.key.signature[i]));
}
private:
template<typename T>
Symbol(const T &n): name(lexical_cast<std::string>(n)) { }
- template<typename T> operator T() const { return lexical_cast<T>(name); }
+ template<typename T>
+ explicit operator T() const { return lexical_cast<T>(name); }
};
struct IntType
template<typename T>
typename TypeInfo<T>::Load get() const
- { return get_<typename TypeInfo<T>::Store>(); }
+ { return static_cast<typename TypeInfo<T>::Load>(get_<typename TypeInfo<T>::Store>()); }
char get_signature() const { return sig; }
private: