[Boost-bugs] [Boost C++ Libraries] #3681: Comeau throws "no operator==" and "no suitable conversion" errors

Subject: [Boost-bugs] [Boost C++ Libraries] #3681: Comeau throws "no operator==" and "no suitable conversion" errors
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-11-26 20:58:01


#3681: Comeau throws "no operator==" and "no suitable conversion" errors
-----------------------------------------------------------+----------------
 Reporter: Mateusz Loskot (mloskot) <mateusz@…> | Owner: bemandawes
     Type: Bugs | Status: new
Milestone: Boost 1.42.0 | Component: filesystem
  Version: Boost Development Trunk | Severity: Problem
 Keywords: como,comeau |
-----------------------------------------------------------+----------------
 Building Boost.Filesystem library using Comeau C/C++ frontend with GCC
 4.3.3 on Linux 32-bit (Ubuntu 9.03) compilation of
 ''filesystem/src/operations.cpp'' reports missing equal-to operators for
 some POSIX-related types:

 {{{
 como-linux.compile.c++ ../../../bin.v2/libs/filesystem/build/como-
 linux/debug/link-static/operations.o
 Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
 Copyright 1988-2008 Comeau Computing. All rights reserved.
 MODE:non-strict warnings C++ noC++0x_extensions

 "../../../libs/filesystem/src/operations.cpp", line 1027: error: no
 operator
           "==" matches these operands
             operand types are: __off64_t == int
             : path_stat.st_size == 0 );
                                 ^

 "../../../libs/filesystem/src/operations.cpp", line 1041: error: no
 operator
           "==" matches these operands
             operand types are: __dev_t == __dev_t
               s1.st_dev == s2.st_dev
                         ^

 "../../../libs/filesystem/src/operations.cpp", line 1042: error: no
 operator
           "==" matches these operands
             operand types are: __ino64_t == __ino64_t
               && s1.st_ino == s2.st_ino
                            ^

 "../../../libs/filesystem/src/operations.cpp", line 1046: error: no
 operator
           "==" matches these operands
             operand types are: __off64_t == __off64_t
               && s1.st_size == s2.st_size
                             ^
 }}}

 Also, ''no suitable conversion'' errors are thrown for the same source
 code:

 {{{
 "../../../libs/filesystem/src/operations.cpp", line 1059: error: no
 suitable
           conversion function from "__off64_t" to "boost::uintmax_t"
 exists
             static_cast<boost::uintmax_t>(path_stat.st_size) );
                                           ^

 "../../../libs/filesystem/src/operations.cpp", line 1077: error: no
 suitable
           conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
           exists
               = static_cast<boost::uintmax_t>(vfs.f_blocks) *
 BOOST_STATVFS_F_FRSIZE;
                                               ^

 "../../../libs/filesystem/src/operations.cpp", line 1079: error: no
 suitable
           conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
           exists
               = static_cast<boost::uintmax_t>(vfs.f_bfree) *
 BOOST_STATVFS_F_FRSIZE;
                                               ^

 "../../../libs/filesystem/src/operations.cpp", line 1081: error: no
 suitable
           conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
           exists
               = static_cast<boost::uintmax_t>(vfs.f_bavail) *
 BOOST_STATVFS_F_FRSIZE;
                                               ^

 "../../../libs/filesystem/src/operations.cpp", line 1317: error: argument
 of
           type "dirent *" is incompatible with parameter of type "dirent64
 *"
               { return ::readdir_r( dirp, entry, result ); }
                                           ^

 "../../../libs/filesystem/src/operations.cpp", line 1317: error: argument
 of
           type "dirent **" is incompatible with parameter of type
 "dirent64 **"
               { return ::readdir_r( dirp, entry, result ); }
                                                  ^

 "../../../libs/filesystem/src/operations.cpp", line 1322: error: a value
 of
           type "dirent64 *" cannot be assigned to an entity of type
 "dirent *"
             if ( (p = ::readdir( dirp )) == 0 )
                     ^
 }}}

 Here is complete ''como'' command:
 {{{
 como -tused -c --long_long -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1
 -DBOOST_SYSTEM_STATIC_LINK=1 -D_GNU_SOURCE=1 --no_inlining -O0 -g
 --exceptions -I"../../.." -o "../../../bin.v2/libs/filesystem/build
 /como-linux/debug/link-static/operations.o"
 "../../../libs/filesystem/src/operations.cpp"
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/3681>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:01 UTC