0

だから、私はジェネリック変換演算子を書き込もうとしているこのテンプレートクラスを持っています。私が思いついたのはこれです(動作しません: "エラー-'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);
}

私は何か間違ったことをしているのですか、それともそれは不可能ですか?

4

1 に答える 1

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);
    }
于 2012-09-07T12:37:57.470 に答える