[ 
https://issues.apache.org/jira/browse/ARROW-16876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jefferson Carpenter updated ARROW-16876:
----------------------------------------
    Description: 
Some of the code in checked_cast.h uses {{dynamic_cast}} unless NDEBUG is 
defined.  Defining NDEBUG affects other C++ functionality, for example it 
causes {{assert}} statements to be compiled out of the program.

It would be nice if Arrow provided some mechanism for compiling without RTTI 
(viz. not using dynamic_cast) without requiring NDEBUG to be defined and 
affecting assertions in other code.

 

Workaround 1: Compile without neither -fno-rtti nor NDEBUG in DEBUG mode, and 
with both -fno-rtti and NDEBUG in RELEASE mode.

Workaround 2: Include Arrow headers through a project header that defines 
NDEBUG, has the Arrow include statements, and then undefines NDEBUG.

  was:
Some of the code in checked_cast.h uses {{dynamic_cast}} unless NDEBUG is 
defined.  Defining NDEBUG affects other C++ functionality, for example it 
causes {{assert}} statements to be compiled out of the program.

It would be nice if Arrow provided some mechanism for compiling without RTTI 
(viz. not using dynamic_cast) without requiring NDEBUG to be defined and 
affecting assertions in other code.

 

P.S. An alternative workaround would be to include Arrow headers through a 
project header that defines NDEBUG, has the Arrow include statements, and then 
undefines NDEBUG.


> [C++] NDEBUG required for -fno-rtti
> -----------------------------------
>
>                 Key: ARROW-16876
>                 URL: https://issues.apache.org/jira/browse/ARROW-16876
>             Project: Apache Arrow
>          Issue Type: Wish
>          Components: C++
>    Affects Versions: 8.0.0
>            Reporter: Jefferson Carpenter
>            Priority: Minor
>
> Some of the code in checked_cast.h uses {{dynamic_cast}} unless NDEBUG is 
> defined.  Defining NDEBUG affects other C++ functionality, for example it 
> causes {{assert}} statements to be compiled out of the program.
> It would be nice if Arrow provided some mechanism for compiling without RTTI 
> (viz. not using dynamic_cast) without requiring NDEBUG to be defined and 
> affecting assertions in other code.
>  
> Workaround 1: Compile without neither -fno-rtti nor NDEBUG in DEBUG mode, and 
> with both -fno-rtti and NDEBUG in RELEASE mode.
> Workaround 2: Include Arrow headers through a project header that defines 
> NDEBUG, has the Arrow include statements, and then undefines NDEBUG.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to