[Bug c++/63732] New: constexpr is not constant expression, when cast member data pointer to data parent type
pavel.kral at omsquare dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 4 09:37:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63732
Bug ID: 63732
Summary: constexpr is not constant expression, when cast member
data pointer to data parent type
Product: gcc
Version: 4.9.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pavel.kral at omsquare dot com
The code bellow returns error on 4.9.2 (and cause ICE on 4.8.x) tested on
Linux, MinGW and arm-none-eabi. While 'xxx' compiles just fine, 'yyy' which is
casted to parent type doesn't. Just for clarification static const array
'm_members' compiles fine and generate values at compile time in .rodata
section as expected (arm-none-eabi).
class PropertyBase {};
class Number : PropertyBase {};
class ComplexProperty : PropertyBase {
public:
Number m_firstNumber;
static PropertyBase ComplexProperty::* const m_members[];
// compiles fine
static constexpr auto xxx = (Number
ComplexProperty::*)&ComplexProperty::m_firstNumber;
// error: '(PropertyBase
ComplexProperty::*)&ComplexProperty::m_firstNumber' is not a constant
expression
static constexpr auto yyy = (PropertyBase
ComplexProperty::*)&ComplexProperty::m_firstNumber;
};
// compiles fine
PropertyBase ComplexProperty::* const ComplexProperty::m_members[] = {
(PropertyBase ComplexProperty::*) &ComplexProperty::m_firstNumber
};
static ComplexProperty person;
int main() {
}
More information about the Gcc-bugs
mailing list