[Bug c++/78609] New: invalid member's visibility detection in constexpr
bobk-off at yandex dot ru
gcc-bugzilla@gcc.gnu.org
Wed Nov 30 08:49:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78609
Bug ID: 78609
Summary: invalid member's visibility detection in constexpr
Product: gcc
Version: 6.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: bobk-off at yandex dot ru
Target Milestone: ---
All known for me version of gcc failed to compile following code with error "
error: 'char A::data [28]' is private". clang compiles ok. Looks like compiler
incorrectly interprets members visibility.
#include <cstddef>
struct A
{
private:
char data[28];
public:
constexpr const char * c_str() const { return data; }
template<size_t N> constexpr A(char const (&str)[N]) : data()
{
for (size_t i=0;i<N;i++) data[i] = str[i];
};
constexpr A() : data() {};
};
template<size_t I>
struct B
{
static const constexpr A name = A("Some text");
static const constexpr char * value = name.c_str();
};
template<size_t I>
const constexpr A B<I>::name;
int main()
{
volatile char d;
const char * c = B<0>::value;
while (*c!=0) d = *c++;
}
More information about the Gcc-bugs
mailing list