The goal is to have a constexpr constructor that takes traits as arguments in any order. E.g.
constexpr TaskTraits default_traits;
constexpr TaskTraits user_visible_traits = {TaskPriority::USER_VISIBLE};
constexpr TaskTraits user_visible_may_block_traits = {TaskPriority::USER_VISIBLE, MayBlock()};
constexpr TaskTraits other_user_visible_may_block_traits = {MayBlock(), TaskPriority::USER_VISIBLE};
This will reduce binary and code size compared to the current builder pattern.
Comment 1 by gab@chromium.org
, Apr 20 2017