Сообщение MSVC 2013/2015 internal compiler error от 04.09.2015 11:50
Изменено 06.09.2015 11:41 SaZ
Захотелось странного, опущу контекст.
Нужно написать функцию, которая вызовет метод класса и вернёт результат этого метода. Пробую:
(Студия падает на таком)
Но тут вижу, что я что-то делаю не так.
Собственно, вопросы: 1) куда написать багрепорт, 2) как объявить функцию invoke
Нужно написать функцию, которая вызовет метод класса и вернёт результат этого метода. Пробую:
(Студия падает на таком)
#include <type_traits>
#include <iostream>
template <typename T, typename M, typename ...Args>
auto invoke( T *object, M method, Args&&... args ) -> decltype( *method )
{
return ( static_cast<T*>( object )->*method )( std::forward<Args>( args )... );
}
struct Foo
{
int triple( int val )
{
return val * 3;
}
};
int main()
{
Foo foo;
std::cout << invoke( &foo, &Foo::triple, 5 ); // output: 15
return 0;
}
Но тут вижу, что я что-то делаю не так.
Собственно, вопросы: 1) куда написать багрепорт, 2) как объявить функцию invoke
MSVC 2013/2015 internal compiler error
Багрепорт: https://connect.microsoft.com/VisualStudio/Feedback/Details/1756242
Захотелось странного, опущу контекст.
Нужно написать функцию, которая вызовет метод класса и вернёт результат этого метода. Пробую:
(Студия падает на таком)
Но тут вижу, что я что-то делаю не так.
Собственно, вопросы: 1) куда написать багрепорт, 2) как объявить функцию invoke
Захотелось странного, опущу контекст.
Нужно написать функцию, которая вызовет метод класса и вернёт результат этого метода. Пробую:
(Студия падает на таком)
#include <type_traits>
#include <iostream>
template <typename T, typename M, typename ...Args>
auto invoke( T *object, M method, Args&&... args ) -> decltype( *method )
{
return ( static_cast<T*>( object )->*method )( std::forward<Args>( args )... );
}
struct Foo
{
int triple( int val )
{
return val * 3;
}
};
int main()
{
Foo foo;
std::cout << invoke( &foo, &Foo::triple, 5 ); // output: 15
return 0;
}
Но тут вижу, что я что-то делаю не так.
Собственно, вопросы: 1) куда написать багрепорт, 2) как объявить функцию invoke