Я создаю шаблонный класс, который является оболочкой любого итератора. Я делаю оператор * следующим образом:
template <typename T>
class MyIterator {
public:
//...
decltype(*T()) operator*() {
//...
}
}
Я передаю decltype вызову оператора * класса T, и он даже работает, но если у T нет конструктора по умолчанию, он не будет работать.
Есть ли способ узнать, какой возвращаемый тип функции / метода?