[C++0x] decltype + überladene Funktionstemplates
-
Hallo zusammen, folgendes Szenario:
Fremdcode://boost/assign/ptr_map_inserter.hpp: template< class PtrMap > inline ptr_map_inserter< PtrMap, typename PtrMap::mapped_reference > ptr_map_insert( PtrMap& m ) { return ptr_map_inserter< PtrMap, typename PtrMap::mapped_reference >( m ); } template< class T, class PtrMap > inline ptr_map_inserter< PtrMap, T > ptr_map_insert( PtrMap& m ) { return ptr_map_inserter< PtrMap, T >( m ); }
#include <boost/assign/ptr_map_inserter.hpp> template <class T> class DataHandler { /* ... */ }; template <class T, class PtrMap> //boost::assign::ptr_map_inserter<PtrMap, DataHandler<T>> handlerMapInsert(PtrMap& map) -> decltype (boost::assign::ptr_map_insert<DataHandler<T>>(map)) { return (boost::assign::ptr_map_insert<DataHandler<T>>(map)); }
Ergibt in MSVC2010
???.cpp(13): error C3557: Eine Funktion kann nicht sowohl einen Rückgabetyp als auch einen spät angegebenen Rückgabetyp aufweisen. ???.cpp(13): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
Vor allem die erste Fehlermeldung will mir nicht einleuchten. Wenn ich den decltype auskommentiere und den Rückgabetyp davor ein, dann passts. Was mache ich falsch?
-
auto vor den Funktionsnamen machen.
-
KasF schrieb:
auto vor den Funktionsnamen machen.
gnarf. Danke.