Jak mogę przejść do określenia typu zwrotu funkcji ogólnej członka?Szablon C++ określa funkcję zwracanego typu
template<class E>
struct result<E> {
// E has member function data(), I need to know its return type
typedef typename &E::data type;
};
czy można to zrobić w sposób ogólny? Wiem, że jest boost:: result_of
, ale dla moich celów brakuje specjalizacji (jeśli dobrze rozumiem, typ zwrotu musi być wyspecjalizowany). Implementacja wzmocnienia byłaby świetna.
Prawdopodobnie w ogóle nie potrzebujesz tej magii. Spróbuj użyć 'E :: value_type *' lub 'E :: point'. Jeśli ma "dane()", prawdopodobnie jest kontenerem i zapewnia publiczne typy. –
@Johannes dziękuję. faktycznie próbował pisać opakowania, aby działały transparentnie z ublami i innymi rzeczami. Niestety, interfejs ublas data() jest nieco niestandardowy (array_type), więc ostatecznie wyspecjalizowałem go oddzielnie. – Anycorn