Opened 13 years ago
Closed 12 years ago
#3681 closed Bugs (wontfix)
Comeau throws "no operator==" and "no suitable conversion" errors
Reported by: | Owned by: | Beman Dawes | |
---|---|---|---|
Milestone: | Boost 1.42.0 | Component: | filesystem |
Version: | Boost Development Trunk | Severity: | Problem |
Keywords: | como, comeau | Cc: |
Description
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"
Note:
See TracTickets
for help on using tickets.
I'm closing this as "wontfix" since the Comeau compiler is not one compilers being regression tested regularly. Much filesystem code is platform dependent, so if an error is platform specific, it is just too difficult to trouble shoot unless that platform is being tested regularly.
Sorry,
--Beman