ACE_TAO icon indicating copy to clipboard operation
ACE_TAO copied to clipboard

ACE headers can't be used with C++14 or C++17

Open ithinu opened this issue 1 month ago • 0 comments

Latest snapshot of master, Ubuntu 22.04

The $ACE_ROOT/ace/config.h file

#define ACE_DISABLE_MKTEMP #define ACE_DISABLE_READDIR_R #define ACE_DISABLE_TEMPNAM #define TAO_HAS_UIOP 0 #include "ace/config-linux.h"

The $ACE_ROOT/include/makeinclude/platform_macros.GNU file

CCFLAGS += -std=c++17 optimize = 0 include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

Contents of $ACE_ROOT/bin/MakeProjectCreator/config/default.features

no_cxx11=0 no_cxx17=0 no_rapidjson=0

AREA/CLASS/EXAMPLE AFFECTED:

ACE compiles fine, but I cannot compile anything that includes its headers. I presumed C++17, but:

/usr/local/include/ace/CDR_Base.inl: In member function ‘ACE_CDR::Fixed::Proxy& ACE_CDR::Fixed::Proxy::operator+=(int)’: /usr/local/include/ace/CDR_Base.inl:305:47: error: ambiguous overload for ‘operator+’ (operand types are ‘ACE_CDR::Fixed::Proxy’ and ‘int’) 305 | const Octet val = static_cast<Octet> (*this + rhs); | ~~~~~ ^ ~~~ | | | | | int | ACE_CDR::Fixed::Proxy

which looks like a C++14 code. But when attempting to compile with C++14:

/usr/local/include/ace/Global_Macros.h:61:3: error: #error ACE/TAO require C++17 compliance, please upgrade your compiler and/or fix the platform configuration for your environment 61 | # error ACE/TAO require C++17 compliance, please upgrade your compiler and/or fix the platform configuration for your environment

ithinu avatar Nov 10 '25 12:11 ithinu