Aracılığıyla paylaş


is_invocable, is_invocable_r, is_nothrow_invocable is_nothrow_invocable_r sınıfları

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

Ayrıca bkz.

<type_traits>
çağırmak