模板显式转换运算符

时间:2012-09-07 12:24:24

标签: c++ templates

所以,我有这个模板类,我正在尝试编写一个通用的转换运算符。 我想出的是这个(不起作用:“错误 - 期望'typename'之后的合格名称”):

template <typename T>
class object{
...
T internal;
...
template <typename U>
explicit operator typename decltype(
std::conditional< 
     std::is_convertible<T, U>::type , U, T>::type)()
{
return static_cast<std::conditional<std::is_convertible<T, U>::type ,U, T>::type>(internal);
}

我做错了什么或者是不可能的?

1 个答案:

答案 0 :(得分:1)

管理以找到我自己的解决方案:

    template <typename U>
    explicit operator typename decltype(std::conditional< 
                                        std::is_convertible<T, U>::type , 
                                        U, 
                                        T>::type)::value_type ()

    {
        return static_cast<typename decltype(std::conditional< 
                        std::is_convertible<T, U>::type , 
                        U, 
                        T>::type)::value_type>(internal);
    }