Target: x86_64-unknown-linux-gnu Configured with: ../gcc/configure CC=gcc43 CXX=g++43 --program-suffix=43 --disable-multilib --enable-languages=c,c++ Thread model: posix gcc version 4.3.0 20070816 (experimental)
The following code: #include <type_traits> int main() { bool b = std::is_convertible<int*,int*>::value; } when compiled with: g++43 -std=c++0x test.cpp -o test Gives: include/c++/4.3.0/type_traits: In instantiation of const bool std::__is_convertible_helper<int*, int*, false>::__value: include/c++/4.3.0/type_traits:258: instantiated from std::is_convertible<int*, int*> test.cpp:5: instantiated from here include/c++/4.3.0/type_traits:243: error: invalid use of incomplete type struct std::add_reference<int*> include/c++/4.3.0/tr1_impl/type_traitsfwd.h:157: error: declaration of struct std::add_reference<int*> include/c++/4.3.0/type_traits: In instantiation of std::is_convertible<int*, int*>: test.cpp:5: instantiated from here include/c++/4.3.0/type_traits:258: error: std::__is_convertible_helper<int*, int*, false>::__value is not a valid template argument for type bool because it is a non-constant expression test.cpp: In function int main(): test.cpp:5: error: value is not a member of std::is_convertible<int*, int*> Besauce the following structure uses deprecated add_reference. template<typename _From, typename _To, bool = (is_void<_From>::value || is_void<_To>::value || is_function<_To>::value || is_array<_To>::value // This special case is here only to avoid warnings. || (is_floating_point<typename remove_reference<_From>::type>::value && __is_int_or_cref<_To>::__value))> struct __is_convertible_helper { // "An imaginary lvalue of type From...". static const bool __value = (__is_convertible_simple<typename add_reference<_From>::type, _To>::__value); }; FIX: change add_reference to add_lvalue_reference (see attached patch) -- Summary: __is_convertible_helper in tr1_impl/type_traits uses deprecated add_reference Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: chris dot fairles at gmail dot com GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33098