Are you sure the compiler finds both acceptable, and doesn't say that none are acceptable and lists the candidates? std::tuple
's argument-per-element constructor is explicit
, and so is not eligible when it comes to copy-initializing the parameter from a braced initializer. In other words, neither function should be selected.
You need to explicitly construct the tuple in the argument.