Рассмотрим следующий код:
#include <iostream>
class A
{
char name[40] = { "Blank" }; // note the braces here
public:
const char *getName() { return name; }
};
int main()
{
A a;
std::cout << a.getName() << std::endl;
}
Он дает ошибку в gcc
(последняя версия 5.2.0
):
prog.cpp:5:28: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
char name[40] = { "Blank" };
^
Но это не относится к clang
, который скомбинирует его с -std=c++11 -pedantic -Wall
.
Действительно ли неверно помещать скобки для нестатического инициализатора здесь?
AFAIR не имеет значения, присутствуют ли фигурные скобки или нет. Например, определение массива, например:
char text[] = "some text";
эквивалентно:
char text[] = { "some text" };