Funções <atomic>
atomic_compare_exchange_strong
atomic_compare_exchange_strong_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_weak_explicit
atomic_exchange
atomic_exchange_explicit
atomic_fetch_add
atomic_fetch_add_explicit
atomic_fetch_and
atomic_fetch_and_explicit
atomic_fetch_or
atomic_fetch_or_explicit
atomic_fetch_sub
atomic_fetch_sub_explicit
atomic_fetch_xor
atomic_fetch_xor_explicit
atomic_flag_clear
atomic_flag_clear_explicit
atomic_flag_test_and_set
atomic_flag_test_and_set_explicit
atomic_init
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_signal_fence
atomic_store
atomic_store_explicit
atomic_thread_fence
kill_dependency
atomic_compare_exchange_strong
Executa uma operação de comparação e troca atômica.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Exp
Um ponteiro para um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Valor de retorno
true
se os valores forem iguais. Caso contrário, false
.
Comentários
Esse método executa uma operação de comparação e troca atômica usando argumentos memory_order.memory_order_seq_cst
implícitos. Para obter mais informações, consulte atomic_compare_exchange_strong_explicit
.
atomic_compare_exchange_strong_explicit
Executa uma operação atomic compare and exchange
.
template <class T>
inline bool atomic_compare_exchange_strong_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Exp
Um ponteiro para um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Order1
Primeiro argumento memory_order
.
Order2
Segundo argumento memory_order
. O valor de Order2
não pode ser memory_order_release
ou memory_order_acq_rel
, ele não pode ser maior que o valor de Order1
.
Valor de retorno
true
se os valores forem iguais. Caso contrário, false
.
Comentários
Um atomic compare and exchange operation
compara o valor que é armazenado no objeto que é apontado pelo Atom
com o valor que é apontado pelo Exp
. Se os valores forem iguais, o valor armazenado no objeto que é apontado pelo Atom
será substituído por Value
usando uma operação de leitura, alteração e gravação e aplicando as restrições de ordem de memória especificadas pelo Order1
. Se os valores não forem iguais, a operação substituirá o valor apontado por Exp
pelo valor armazenado no objeto apontado por Atom
e aplicará as restrições de ordem de memória especificadas por Order2
.
atomic_compare_exchange_weak
Executa uma operação de comparação e troca atômica fraca.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Exp
Um ponteiro para um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Valor de retorno
true
se os valores forem iguais. Caso contrário, false
.
Comentários
Esse método executa uma operação de comparar e trocar atômica fraca que tem argumentos memory_order.memory_order_seq_cst
implícitos. Para obter mais informações, consulte atomic_compare_exchange_weak_explicit
.
atomic_compare_exchange_weak_explicit
Executa uma operação de comparação e troca atômica fraca.
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Exp
Um ponteiro para um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Order1
Primeiro argumento memory_order
.
Order2
Segundo argumento memory_order
. O valor de Order2
não pode ser memory_order_release
ou memory_order_acq_rel
, nem pode ser maior que o valor de Order1
.
Valor de retorno
true
se os valores forem iguais. Caso contrário, false
.
Comentários
As variantes forte e fraca de um atomic compare and exchange operation
garantem que eles não armazenam o novo valor se os valores esperados e atuais não são iguais. A variante forte garante que eles armazenarão o novo valor se os valores esperados e atuais forem iguais. Às vezes, a variante fraca poderá retornar false
e não armazenará o novo valor, mesmo que os valores atuais e esperados forem iguais. Ou seja, a função retornará false
, mas um exame posterior do valor esperado poderá revelar que ele não foi alterado e, portanto, deve ter sido comparado como igual.
atomic_exchange
Usa Value
para substituir o valor armazenado de Atom
.
template <class T>
inline Ty atomic_exchange(volatile atomic<Ty>* _Atom, Ty Value) noexcept;
template <class Ty>
inline T atomic_exchange(atomic<Ty>* Atom, Ty Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Valor de retorno
O valor armazenado de Atom
antes da troca.
Comentários
A função atomic_exchange
executa uma operação de leitura, alteração e gravação para trocar o valor armazenado em Atom
por Value
, usando memory_order.memory_order_seq_cst
.
atomic_exchange_explicit
Substitui o valor armazenado de Atom
por Value
.
template <class Ty>
inline Ty atomic_exchange_explicit(
volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_exchange_explicit(
atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Order
Um memory_order
.
Valor de retorno
O valor armazenado de Atom
antes da troca.
Comentários
A função atomic_exchange_explicit
executa uma operação de leitura, alteração e gravação para trocar o valor armazenado em Atom
com Value
, dentro das restrições de memória especificadas por Order
.
atomic_fetch_add
Adiciona um valor a um valor existente que é armazenado em um objeto atomic
.
template <class T>
T* atomic_fetch_add(volatile atomic<T*>* Atom, ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_add(atomic<T*>* Atom, ptrdiff_t Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um ponteiro para o tipo T
.
Value
Um valor do tipo ptrdiff_t
.
Valor de retorno
O valor do ponteiro contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_add
executa uma operação de leitura, alteração e gravação para adicionar atomicamente Value
com o valor armazenado em Atom
usando a restrição memory_order.memory_order_seq_cst
.
Quando o tipo atômico é atomic_address
, Value
tem tipo ptrdiff_t
e a operação trata o ponteiro armazenado como um char *
.
Essa operação também está sobrecarregada para tipos integrais:
integral atomic_fetch_add(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_add(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_add_explicit
Adiciona um valor a um valor existente que é armazenado em um objeto atomic
.
template <class T>
T* atomic_fetch_add_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_add_explicit(
atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um ponteiro para o tipo T
.
Value
Um valor do tipo ptrdiff_t
.
Valor de retorno
O valor do ponteiro contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_add_explicit
executa uma operação de leitura, alteração e gravação para adicionar atomicamente Value
ao valor armazenado em Atom
, dentro das restrições de memory_order
especificadas por Order
.
Quando o tipo atômico é atomic_address
, Value
tem tipo ptrdiff_t
e a operação trata o ponteiro armazenado como um char *
.
Essa operação também está sobrecarregada para tipos integrais:
integral atomic_fetch_add_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_add_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_and
Executa um &
bit a bit em um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_and
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um &
bit a bit de Value
e o valor atual armazenado em Atom
usando a restrição memory_order.memory_order_seq_cst
.
atomic_fetch_and_explicit
Executa um &
bit a bit de um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Order
Um memory_order
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_and_explicit
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um &
bit a bit de Value
e o valor atual armazenado em Atom
, dentro das restrições de memória especificadas por Order
.
atomic_fetch_or
Executa um or
bit a bit em um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_or
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um or
bit a bit de Value
e o valor atual armazenado em Atom
usando memory_order.memory_order_seq_cst
.
atomic_fetch_or_explicit
Executa um or
bit a bit em um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Order
Um memory_order
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_or_explicit
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um or
bit a bit de Value
e o valor atual armazenado em Atom
, dentro das restrições memory_order
especificadas por Order
.
atomic_fetch_sub
Subtrai um valor de um valor existente que é armazenado em um objeto atomic
.
template <class T>
T* atomic_fetch_sub(
volatile atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_sub(
atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um ponteiro para o tipo T
.
Value
Um valor do tipo ptrdiff_t
.
Valor de retorno
O valor do ponteiro contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_sub
executa uma operação de leitura, alteração e gravação para subtrair atomicamente Value
com o valor armazenado em Atom
usando a restrição memory_order.memory_order_seq_cst
.
Quando o tipo atômico é atomic_address
, Value
tem tipo ptrdiff_t
e a operação trata o ponteiro armazenado como um char *
.
Essa operação também está sobrecarregada para tipos integrais:
integral atomic_fetch_sub(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_sub(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_sub_explicit
Subtrai um valor de um valor existente que é armazenado em um objeto atomic
.
template <class T>
T* atomic_fetch_sub_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_sub_explicit(
atomic<T*>* Atom,
ptrdiff_t Value, memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um ponteiro para o tipo T
.
Value
Um valor do tipo ptrdiff_t
.
Valor de retorno
O valor do ponteiro contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_sub_explicit
executa uma operação de leitura, alteração e gravação para subtrair atomicamente Value
ao valor armazenado em Atom
, dentro das restrições de memory_order
especificadas por Order
.
Quando o tipo atômico é atomic_address
, Value
tem tipo ptrdiff_t
e a operação trata o ponteiro armazenado como um char *
.
Essa operação também está sobrecarregada para tipos integrais:
integral atomic_fetch_sub_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_sub_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_xor
Executa um exclusive or
bit a bit em um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_xor
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um exclusive or
bit a bit de Value
e o valor atual armazenado em Atom
usando memory_order.memory_order_seq_cst
.
atomic_fetch_xor_explicit
Executa um exclusive or
bit a bit em um valor e um valor existente que é armazenado em um objeto atomic
.
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Value
Um valor do tipo T
.
Order
Um memory_order
.
Valor de retorno
O valor contido pelo objeto atomic
imediatamente antes de a operação ter sido executada.
Comentários
A função atomic_fetch_xor_explicit
executa uma operação de leitura, alteração e gravação para substituir o valor armazenado de Atom
por um exclusive or
bit a bit de Value
e o valor atual armazenado em Atom
, dentro das restrições de memory_order
especificadas por Order
.
atomic_flag_clear
Define o sinalizador bool
em um objeto atomic_flag
como false
, dentro de memory_order.memory_order_seq_cst
.
inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;
Parâmetros
Flag
Um ponteiro para um objeto atomic_flag
.
atomic_flag_clear_explicit
Define o sinalizador bool
em um objeto atomic_flag
como false
, dentro das restrições de memory_order
especificadas.
inline void atomic_flag_clear_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline void atomic_flag_clear_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parâmetros
Flag
Um ponteiro para um objeto atomic_flag
.
Order
Um memory_order
.
atomic_flag_test_and_set
Define o sinalizador bool
em um objeto atomic_flag
como true
, dentro das restrições de memory_order.memory_order_seq_cst
.
inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag,) noexcept;
inline bool atomic_flag_test_and_set(atomic_flag* Flag,) noexcept;
Parâmetros
Flag
Um ponteiro para um objeto atomic_flag
.
Valor de retorno
O valor inicial de Flag
.
atomic_flag_test_and_set_explicit
Define o sinalizador bool
em um objeto atomic_flag
como true
, dentro das restrições de memory_order
especificadas.
inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline bool atomic_flag_test_and_set_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parâmetros
Flag
Um ponteiro para um objeto atomic_flag
.
Order
Um memory_order
.
Valor de retorno
O valor inicial de Flag
.
atomic_init
Define o valor armazenado em um objeto atomic
.
template <class Ty>
inline void atomic_init(volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline void atomic_init(atomic<Ty>* Atom, Ty Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Comentários
atomic_init
não é uma operação atômica. Não é thread-safe.
atomic_is_lock_free
Especifica se operações atômicas em um objeto atomic
são livres de bloqueio.
template <class T>
inline bool atomic_is_lock_free(const volatile atomic<T>* Atom) noexcept;
template <class T>
inline bool atomic_is_lock_free(const atomic<T>* Atom) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que armazena um valor do tipo T
.
Valor de retorno
true
se operações atômicas em Atom
estiverem livres de bloqueio; caso contrário, false
.
Comentários
Um tipo atômico será livre de bloqueio se nenhuma operação atômica no tipo usar bloqueios. Se essa função retornar true
, o tipo será seguro para usar em manipuladores de sinal.
atomic_load
Recupera o valor armazenado em um objeto atomic
.
template <class Ty>
inline Ty atomic_load(const volatile atomic<Ty>* Atom) noexcept;
template <class Ty>
inline Ty atomic_load(const atomic<Ty>* Atom) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que contém um valor do tipo Ty
.
Valor de retorno
O valor recuperado armazenado em Atom
.
Comentários
atomic_load
usa implicitamente memory_order.memory_order_seq_cst
.
atomic_load_explicit
Recupera o valor armazenado em um objeto atomic
dentro de um memory_order
especificado.
template <class Ty>
inline Ty atomic_load_explicit(const volatile atomic<Ty>* Atom, memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_load_explicit(const atomic<Ty>* Atom, memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que contém um valor do tipo Ty
.
Order
Um memory_order
. Não use memory_order_release
nem memory_order_acq_rel
.
Valor de retorno
O valor recuperado armazenado em Atom
.
atomic_signal_fence
Atua como um limite (uma primitiva de sincronização de memória que impõe ordenação entre operações de carregar/armazenar) entre outros limites em um thread de chamada que tem manipuladores de sinal executados no mesmo thread.
inline void atomic_signal_fence(memory_order Order) noexcept;
Parâmetros
Order
Uma restrição de ordenação de memória que determina o tipo de limite.
Comentários
O argumento Order
determina o tipo de limite.
Valor | Descrição |
---|---|
memory_order_relaxed |
O limite não tem efeito. |
memory_order_consume |
O limite é um limite de aquisição. |
memory_order_acquire |
O limite é um limite de aquisição. |
memory_order_release |
O limite é um limite de versão. |
memory_order_acq_rel |
O limite é tanto um limite de aquisição quanto um limite de versão. |
memory_order_seq_cst |
O limite é tanto um limite de aquisição quanto um limite de versão e é sequencialmente consistente. |
atomic_store
Armazena atomicamente um valor em um objeto atomic
.
template <class Ty>
inline Ty atomic_store_explicit(const volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(const atomic<Ty>* Atom, T Value) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que contém um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Comentários
atomic_store
armazena Value
no objeto que é apontado por Atom
, dentro da restrição memory_order.memory_order_seq_cst
.
atomic_store_explicit
Armazena atomicamente um valor em um objeto atomic
.
template <class Ty>
inline Ty atomic_store_explicit(
const volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(
const atomic<Ty>* Atom,
T Value,
memory_order Order) noexcept;
Parâmetros
Atom
Um ponteiro para um objeto atomic
que contém um valor do tipo Ty
.
Value
Um valor do tipo Ty
.
Order
Um memory_order
. Não use memory_order_consume
, memory_order_acquire
nem memory_order_acq_rel
.
Comentários
atomic_store
armazena Value
no objeto apontado por Atom
, dentro do memory_order
especificado por Order
.
atomic_thread_fence
Atua como um limite (uma primitiva de sincronização de memória que impõe a ordenação entre operações de carregar/armazenar) sem uma operação atômica associada.
inline void atomic_thread_fence(memory_order Order) noexcept;
Parâmetros
Order
Uma restrição de ordenação de memória que determina o tipo de limite.
Comentários
O argumento Order
determina o tipo de limite.
Valor | Descrição |
---|---|
memory_order_relaxed |
O limite não tem efeito. |
memory_order_consume |
O limite é um limite de aquisição. |
memory_order_acquire |
O limite é um limite de aquisição. |
memory_order_release |
O limite é um limite de versão. |
memory_order_acq_rel |
O limite é tanto um limite de aquisição quanto um limite de versão. |
memory_order_seq_cst |
O limite é tanto um limite de aquisição quanto um limite de versão e é sequencialmente consistente. |
kill_dependency
Remove uma dependência.
template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;
Parâmetros
Arg
Um valor do tipo Ty
.
Valor de retorno
O valor de retorno é Arg
. A avaliação de Arg
não carregam uma dependência para a chamada de função. Dividindo uma cadeia de dependências possível, a função pode permitir que o compilador gere código mais eficiente.