#include struct test { int _a; test(int a) : _a(a) { } #if !defined(_MSC_VER) && !defined(__GNUC__) // note: not in gcc4.5, gcc4.6 or vc10 test() : test(42) { } #endif }; struct subclass : test { using test::test; }; int main(int,char**) { test a; test b(1); subclass c(1); return 0; }