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 辺りが実装されると嬉しいですね。

[コンパイラ]

  • g++ (GCC) 4.7.0 20111210 (experimental)