support initializer_list