Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu şablonlar, belirtilen bağımsız değişken türleriyle bir türün çağrılabileceğini belirler. is_invocable_r ve is_nothrow_invocable_r ayrıca çağrının sonucunun belirli bir türe dönüştürülebilir olup olmadığını belirleyin. is_nothrow_invocable ve is_nothrow_invocable_r ayrıca çağrının özel durumlar oluşturmadığı bilinip bilinmediğini belirleyin. C++17'ye eklendi.
Sözdizimi
template <class Callable, class... Args>
struct is_invocable;
template <class Convertible, class Callable, class... Args>
struct is_invocable_r;
template <class Callable, class... Args>
struct is_nothrow_invocable;
template <class Convertible, class Callable, class... Args>
struct is_nothrow_invocable_r;
// Helper templates
template <class Callable, class... Args>
inline constexpr bool is_invocable_v =
std::is_invocable<Callable, Args...>::value;
template <class Convertible, class Callable, class... Args>
inline constexpr bool is_invocable_r_v =
std::is_invocable_r<Convertible, Callable, Args...>::value;
template <class Callable, class... Args>
inline constexpr bool is_nothrow_invocable_v =
std::is_nothrow_invocable<Callable, Args...>::value;
template <class Convertible, class Callable, class... Args>
inline constexpr bool is_nothrow_invocable_r_v =
std::is_nothrow_invocable_r<Convertible, Callable, Args...>::value;
Parametreler
Callable
Sorgulanabilen çağrılabilen tür.
Args
Sorguya bağımsız değişken türleri.
Cabrio
Çağrılabilir sonucunun dönüştürülebilir olması gereken tür.
Açıklamalar
is_invocable Çağrılabilir türü Çağrılabilir, değerlendirilmemiş bir bağlamda Args bağımsız değişkenleri kullanılarak çağrılabiliyorsa tür koşulu true değerini tutar.
Çağrılabilir çağrılabilir türü, Dönüştürülebilir'e dönüştürülebilir bir sonuç türü oluşturmak için değerlendirilmemiş bir bağlamda Args bağımsız değişkenleri kullanılarak çağrılabiliyorsa tür koşulu true olarak tutulur.is_invocable_r
is_nothrow_invocable Çağrılabilir türü Çağrılabilir, değerlendirilmemiş bir bağlamda Args bağımsız değişkenleri kullanılarak çağrılabiliyorsa ve böyle bir çağrının özel durum oluşturmadığı biliniyorsa tür koşulu true değerini tutar.
is_nothrow_invocable_r Çağrılabilir türü Çağrılabilir, Dönüştürülebilir'e dönüştürülebilir bir sonuç türü oluşturmak için değerlendirilmemiş bir bağlamda Args bağımsız değişkenleri kullanılarak çağrılabiliyorsa ve böyle bir çağrının özel durum oluşturmadığı biliniyorsa tür koşulu true olarak tutulur.
Convertible, Callable ve Args parametre paketindeki türlerin her biri tam bir tür, bilinmeyen bir sınır dizisi veya muhtemelen cv-qualified voidolmalıdır. Aksi takdirde, koşulun davranışı tanımlanmamıştır.
Örnek
// std__type_traits__is_invocable.cpp
// compile using: cl /EHsc /std:c++17 std__type_traits__is_invocable.cpp
#include <type_traits>
auto test1(int) noexcept -> int (*)()
{
return nullptr;
}
auto test2(int) -> int (*)()
{
return nullptr;
}
int main()
{
static_assert( std::is_invocable<decltype(test1), short>::value );
static_assert( std::is_invocable_r<int(*)(), decltype(test1), int>::value );
static_assert( std::is_invocable_r<long(*)(), decltype(test1), int>::value ); // fails
static_assert( std::is_nothrow_invocable<decltype(test1), int>::value );
static_assert( std::is_nothrow_invocable<decltype(test2), int>::value ); // fails
static_assert( std::is_nothrow_invocable_r<int(*)(), decltype(test1), int>::value );
static_assert( std::is_nothrow_invocable_r<int(*)(), decltype(test2), int>::value ); // fails
}
Gereksinimler
Üst Bilgi:<type_traits>
Ad alanı: std