В этом коде:с ++ частичное соответствие специализации ссылочного типа
// decomplexify ---------------------------------------------------------------
template <typename T>
struct decomplexify
{
typedef T type;
};
template <typename ELT>
struct decomplexify<std::complex<ELT> >
{
typedef ELT type;
};
Оказывается, частичная специализация будет работать на
decomplexify<std::complex<T>>,
но не
decomplexify<std::complex<T>&>
Это на GCC (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1)
Это похоже на ожидаемое поведение? Есть ли способ обхода (кроме избыточной специализации для std :: complex &?)
очень приятно, спасибо! В этом случае результирующий тип удалил бы ссылку, которая, я думаю, и есть то, что я хочу. Но только для любопытства, есть ли решение, которое сохранит ссылку? 'decplexify &> :: type == double &'? –
nbecker