Melhor maneira de escrever o construtor de uma classe que possui um contêiner STL em C ++ 11

class Foo {
  std::vector<SomeType> data_;
};

DizerFoo só pode ser construído com uma cópia (tecnicamente eu quero dizer uma cópia ou movimento) de umstd::vector<SomeType> objeto. Qual é a melhor maneira de escrever construtores paraFoo?

Meu primeiro sentimento, g é

Foo(std::vector<SomeType> data) noexcept : data_(std::move(data)) {};

Ao usá-lo, a construção de uma instância leva 0 ou 1 vezes da cópia do vetor, dependendo se o argumento para {data} é móvel ou não.

questionAnswers(3)

yourAnswerToTheQuestion