c_cpp C ++ 11のとdecltypeのenable_if如果练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++ 11のとdecltypeのenable_if如果练习相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <type_traits>
#include <vector>

extern void* enabler;


template<typename T>
constexpr auto has_begin(T* p) -> decltype((p->begin(), true))
{
    return true;
}


template<typename T>
constexpr bool has_begin(...)
{
    return false;
}


template <typename T, typename std::enable_if<has_begin<T>((T*)nullptr)>::type *& = enabler>
void foo(T a)
{
    std::cout << "OK, it's container class" << std::endl;
}


template <typename T, typename std::enable_if<!has_begin<T>((T*)nullptr)>::type *& = enabler>
void foo(T a)
{
    std::cout << "NG, it's not container class" << std::endl;
}


int main()
{
    std::vector<int> v;
    foo(v);

    int a;
    foo(a);
}

以上是关于c_cpp C ++ 11のとdecltypeのenable_if如果练习的主要内容,如果未能解决你的问题,请参考以下文章

markdown 过去のすべてのコミットのとCommiter作者を変更する

IOIOI卡片占卜(Atcoder-IOIOI カード占い)(最短路)

c_cpp yukicoder No.115远足のおやつ

c_cpp yukicoder No.115远足のおやつ

c_cpp Unix的ドメインソケットの确认

c_cpp c ++かつwindows环境におけるメモリ使用量の取得方法