How to initialize an array in constructor by the argument? I think type (&name)[size]
syntax is pretty good and compiler maintainers can implement this easily. Is there a paragraph in the standard prohibiting such initialization?
Code:
struct Test
{
char characters_[3];
Test(char (&characters)[3]) : characters_(characters) {}
};
GCC version:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GCC output:
FAILED: /usr/bin/c++ -Wall -Wextra -Wconversion -pedantic -Wmissing-declarations -Wmissing-include-dirs -Wfloat-equal -std=c++11 -pg -m32 -std=gnu++11 -MMD -MT CMakeFiles/Test.dir/test.cpp.o -MF CMakeFiles/Test.dir/test.cpp.o.d -o CMakeFiles/Test.dir/test.cpp.o -c /home/user/Desktop/programms/test/Test/test.cpp
In file included from /home/user/Desktop/programms/test/Test/test.cpp:1:0:
/home/user/Desktop/programms/test/Test/test.h: In constructor ‘Test::Test(char (&)[3])’:
/home/user/Desktop/programms/test/Test/test.h:38:54: error: array used as initializer
Test(char (&characters)[3]) : characters_(characters) {}
^
FAILED: /usr/bin/c++ -Wall -Wextra -Wconversion -pedantic -Wmissing-declarations -Wmissing-include-dirs -Wfloat-equal -std=c++11 -pg -m32 -std=gnu++11 -MMD -MT CMakeFiles/Test.dir/main.cpp.o -MF CMakeFiles/Test.dir/main.cpp.o.d -o CMakeFiles/Test.dir/main.cpp.o -c /home/user/Desktop/programms/test/Test/main.cpp
In file included from /home/user/Desktop/programms/test/Test/main.cpp:4:0:
/home/user/Desktop/programms/test/Test/test.h: In constructor ‘Test::Test(char (&)[3])’:
/home/user/Desktop/programms/test/Test/test.h:38:54: error: array used as initializer
Test(char (&characters)[3]) : characters_(characters) {}
^