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环境におけるメモリ使用量の取得方法