It's useful in digital signal processing, but otherwise it just makes your code harder to read.
const int resultBranchless = aVal * switch + bVal * (1 - switch);
//vs
const int resultWithBranching = switch ? aVal : bVal;
Usually compilers will optimize the second one to a cmov or similar instruction, which is as close to fast branching as it can (except cfmov on older x86 CPUs), and is DSP compatible.