ExpertiDict

C++ · Intermediário · Inglês · Técnico

concept

ˈkɑːn.sɛptpalavra-chave

Recurso do C++20 que nomeia um conjunto de requisitos sobre o tipo de um template. O compilador o verifica e dá erros bem mais claros que o SFINAE.

Onde usar

Usado para restringir templates, como template <std::integral T>, deixando a intenção explícita. Em vez de uma parede de erros, o compilador diz qual requisito falhou.

Em código

template <typename T>
concept Somavel = requires(T a, T b) {
  { a + b } -> std::convertible_to<T>;
};
template <Somavel T>
T somar(T a, T b) { return a + b; }

Exemplos

Constrain the template with a concept instead of SFINAE.

Restrinja o template com um concept em vez de SFINAE.

The error now says the type doesn't satisfy the concept.

O erro agora diz que o tipo não satisfaz o concept.

Cuidado

Um concept só verifica a sintaxe exigida, como a existência de operações; não garante que a semântica do tipo seja a esperada.

Sinônimos

restrição de template

Veja também

Todos os termos de C++