gcc 4.7 に Delegating constructors が実装
されていたらしいので試してみました。
gcc 4.7 のバイナリはここのものを使用しました。
[ソース]
#include <iostream> struct vec3{ vec3(float x, float y, float z) : x(x), y(y), z(z){} vec3() : vec3(0.0f, 0.0f, 0.0f){} vec3(float f) : vec3(f, f, f){} float x, y, z; }; void disp(vec3 v){ std::cout << v.x << ", " << v.y << ", " << v.z << std::endl; } int main(){ disp(vec3()); disp(vec3(1.0f)); disp(vec3(1.0f, 2.0f, 3.0f)); return 0; }
[出力]
0, 0, 0 1, 1, 1 1, 2, 3
次は Inheriting constructors 辺りが実装されると嬉しいですね。