【发布时间】:2015-03-27 04:06:50
【问题描述】:
我想构建能够回答is_vector、is_list 等问题的特征。问题是我必须制作每个版本的两个版本,即模板模板参数一:
template<template<class,class> class C>
struct is_vector1 : std::false_type { };
template<>
struct is_vector1<std::vector> : std::true_type { };
还有一个简单的模板参数:
template<class T>
struct is_vector2 : std::false_type { };
template<class T, class Alloc>
struct is_vector2<std::vector<T, Alloc>> : std::true_type { };
每个都将在不同的上下文中使用
// 1
is_vector1<std::list>::value;
// 2
template<typename C>
auto func(C const& data) -> typename std::enable_if<is_vector2<C>::value>::type
{ /**/ }
有没有办法在两种情况下都只有一个版本可用?
注意
我没有制作基本模板的选项,一个可变参数模板,我在 C++11 之前的上下文中工作
【问题讨论】:
-
在 C++11 之前的上下文中,带有尾随返回类型的替代函数定义语法是否无效?
-
@gha.st 1. 它只是为了举例 2. 我相信it is
-
@gha.st 是的,正确的。错误的复制粘贴,thnx 用于发现,我更正了它
-
发生在我们最好的人身上 ;)
标签: c++ template-meta-programming typetraits