prog.cpp: In instantiation of 'base<T>::base() [with T = non_default_impl]':
prog.cpp:28:8: required from here
prog.cpp:24:3: error: invalid use of incomplete type 'base<non_default_impl>::data_type {aka struct event_data<non_default_impl>}'
data_type();
^
prog.cpp:2:8: note: declaration of 'base<non_default_impl>::data_type {aka struct event_data<non_default_impl>}'
struct event_data;
^