[gelöst] Compilerbug?
-
Hi,
ist das folgende ein Compilerbug? GCC und Clang produzieren jeweils unterschiedliche Ergebnisse:
#include <iostream> #include <iomanip> #include <typeinfo> #include <type_traits> template <class T> class Foo { public: typedef T type; }; template <class T1, class T2> Foo<typename std::common_type<T1, T2>::type> bar(Foo<T1>, Foo<T2>) {} int main() { std::cout << std::boolalpha << std::is_rvalue_reference<decltype(bar(Foo<float>(), Foo<float>() ) )::type>::value << std::endl; }GCC:
falseClang (mit -stdlib=libstdc++)
trueClang (mit -stdlib=libc++)
false
-
Ok, ich habe die Lösung gefunden: Clang hat recht, aber std::common_type in libstdc++ hat einen Bug.
http://cplusplus.github.com/LWG/lwg-active.html#2141
-
pyhax schrieb:
Ok, ich habe die Lösung gefunden: Clang hat recht
Die mit welchem Flag?
-
Mit beiden Flags. Libc++ enthält den Fix für std::common_type, Libstdc++ nicht
