[FunctionTypes] Getting functor/lambda parameters (VS2012)
Hi, I'm using C++ compiler from the latest VS2012. I'm trying this simple technique to determined type of functor or lambda call parameter, it works well: #include <boost/function_types/parameter_types.hpp> int main() { auto foo = [](int) -> void {}; typedef decltype(foo) foo_type; typedef boost::function_types::parameter_types < decltype(&foo_type::operator()) >::type parameter_types; } Next, I move the typedef into class template, in constructor body, it works well too: template <typename T> struct A { A(T t) { typedef typename boost::function_types::parameter_types < decltype(&T::operator()) >::type parameter_types; } }; Finally, I move further with the technique, so I can access parameter types within class template scope: template <typename T> struct B { typedef typename boost::function_types::parameter_types < decltype(&T::operator()) >::type parameter_types; }; This example does compile with clang 3.4 (svn trunk) and GCC 4.8.1, but it does not compile with Visual C++ 11.0. Does anyone understand what C++11 feaure VS2012 is lacking so it prevents compilation of the sample with B template above? Here is complete .cpp file https://gist.github.com/mloskot/5846468 Best regards, -- Mateusz Loskot, http://mateusz.loskot.net
participants (1)
-
Mateusz Loskot