Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基本类型std::vector的部分类模板专门化_C++_Templates_C++11_Template Specialization - Fatal编程技术网

C++ 基本类型std::vector的部分类模板专门化

C++ 基本类型std::vector的部分类模板专门化,c++,templates,c++11,template-specialization,C++,Templates,C++11,Template Specialization,我想专门为包含基本类型的std::vector创建一个类模板 我的方法看起来像这样,但是 #包括 #包括 #包括 #包括 模板 结构foo{ 静态void show() { std::cout模板 结构foo { 静态void show() { 标准::cout 结构foo { 静态void show() { std::cout模板 结构foo { 静态void show() { 标准::cout 结构foo { 静态void show() { 标准::cout #include <typ

我想专门为包含基本类型的std::vector创建一个类模板

我的方法看起来像这样,但是

#包括
#包括
#包括
#包括
模板
结构foo{
静态void show()
{
std::cout
模板
结构foo
{
静态void show()
{
标准::cout
结构foo
{
静态void show()
{
std::cout
模板
结构foo
{
静态void show()
{
标准::cout
结构foo
{
静态void show()
{
标准::cout
#include <type_traits>
#include <vector>
#include <string>
#include <iostream>

template <typename T, bool bar = false>
struct foo {
    static void show()
    {
        std::cout << "T" << std::endl;
    }
};

template <typename T>
struct foo<typename std::enable_if<std::is_fundamental<T>::value, std::vector<T>>::type, false> {
    static void show()
    {
        std::cout << "std::vector<fundamental type>" << std::endl;
    }
};

template <typename T>
struct foo<std::vector<T>, false> {
    static void show()
    {
        std::cout << "std::vector<T>" << std::endl;
    }
};

int main()
{
    foo<int>::show();
    foo<std::vector<int>>::show();
    foo<std::vector<std::string>>::show();
}
template <typename T, typename = void>
struct foo
{
    static void show()
    {
        std::cout << "T" << std::endl;
    }
};

template <typename T, typename Alloc>
struct foo<std::vector<T, Alloc>
         , typename std::enable_if<!std::is_fundamental<T>::value>::type>
{
    static void show()
    {
        std::cout << "std::vector<T>" << std::endl;
    }
};

template <typename T, typename Alloc>
struct foo<std::vector<T, Alloc>
         , typename std::enable_if<std::is_fundamental<T>::value>::type>
{
    static void show()
    {
        std::cout << "std::vector<fundamental type>" << std::endl;
    }
};