小编kre*_*und的帖子

std :: is_same等效于非特定模板类型

在一个项目中,我发现有可能将DRY保留为很多代码,除了一些小部件可以保持模板的模板特化相同.这是一个小工作示例,我正在做的是检查我正在使用的模板化类:

template<typename T>
class A{};

template<typename T>
class B{};

template<template<class> class C>
void do_stuff()
{
    if(std::is_same<A<int>,C<int>>::value)
    {
    // Do Stuff for A
    } else if(std::is_same<B<int>,C<int>>::value)
    // Do Stuff for B
    }
}

int main()
{
    do_stuff<A>();
}
Run Code Online (Sandbox Code Playgroud)

我想做的是使用

std::is_same<A,C>::value
Run Code Online (Sandbox Code Playgroud)

确定模板类型.是否有任何功能可以帮助我,或者我错过了一种在这种情况下效果更好的模式?

我看到我可以做类似的事情

template<template<class> class C, typename T>
void do_stuff();

do_stuff<A,T>();
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎是错误的做法.

c++ templates c++11

3
推荐指数
1
解决办法
1921
查看次数

标签 统计

c++ ×1

c++11 ×1

templates ×1