Получить тип возврата метода из указателя функции членаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Получить тип возврата метода из указателя функции члена

Сообщение Anonymous »

Я пытаюсь объявить переменную, чтобы ее тип был таким же, как и возвратный тип функции члена, к которой у меня есть указатель функции члена. < /p>

Код: Выделить всё

class Widget {
public:
std::chrono::milliseconds Foo();
};
Например, с учетом указателя функции члена fn , который указывает на Widget :: foo ,
Как я бы объявил переменную Blah , чтобы он получил виджет :: foo

Код: Выделить всё

std::chrono::milliseconds
)?

Я нашел некоторые многообещающие рекомендации из сообщения в блоге, в котором используется result_of от вместе с Decltype , но я не могу заставить его работать.

Код: Выделить всё

auto fn = &Widget::Foo;
Widget w;
std::result_of::type blah;
< /code>

Этот подход имеет смысл для меня, но VC ++ 2013 это не нравится. < /p>

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xrefwrap(58): error C2064: term does not evaluate to a function taking 0 arguments
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xrefwrap(118) : see reference to class template instantiation 'std::_Result_of' being compiled
with
[
_Fty=std::chrono::milliseconds (__cdecl Widget::* )(void)
]
scratch.cpp(24) : see reference to class template instantiation 'std::result_of' being compiled
< /code>

Я не знаю, делаю ли я что -то не так или это то, что VC ++ еще не обрабатывает (или оба!).  Единственная подсказка, которую я вижу в сообщении об ошибке, - это __cDecl 
. Разве вызывающая конвенция не должна быть __thiscall ?

Подробнее здесь: https://stackoverflow.com/questions/291 ... on-pointer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»