相关疑难解决方法(0)

std :: enable_if如何工作?

我刚问了这个问题:std :: numeric_limits作为一个条件

我理解用于std::enable_if定义有条件地导致该方法无法编译的方法的返回类型的用法.

template<typename T>
typename std::enable_if<std::numeric_limits<T>::is_integer, void>::type foo(const T &bar) { isInt(bar); }
Run Code Online (Sandbox Code Playgroud)

我不明白的是第二个参数和看似无意义的赋值,std::enable_if当它被声明为模板语句的一部分时,如Rapptz的 回答.

template<typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0>
void foo(const T& bar) { isInt(); }
Run Code Online (Sandbox Code Playgroud)

c++ templates enable-if c++11

13
推荐指数
2
解决办法
6223
查看次数

有什么像一个模板化的案例声明

所以我有这个非常难看的代码:

template <typename T>
std::conditional_t<sizeof(T) == sizeof(char),
                   char,
                   conditional_t<sizeof(T) == sizeof(short),
                                 short,
                                 conditional_t<sizeof(T) == sizeof(long),
                                               long,
                                               enable_if_t<sizeof(T) == sizeof(long long),
                                                           long long>>>> foo(T bar){return reinterpret_cast<decltype(foo(bar))>(bar);}
Run Code Online (Sandbox Code Playgroud)

我正在使用嵌套的conditional_ts来创建一个case语句.有什么东西可以更优雅地完成这个或者我需要做出我自己的模板化案例陈述吗?

注意:我实际上意识到这种用法reinterpret_cast很糟糕:为什么不为同尺寸类型之间的强制转换重新解释强制copy_n?

c++ conditional templates case-statement nested-if

11
推荐指数
2
解决办法
1001
查看次数

C++ 14使用is_same :: value的别名

这个问题用了is_same<uint64_t, decltype(val)>::value.

我希望那里是一个C++ 14 using alias:is_same_v类似于助手类型:conditional_t,enable_if_t,和tuple_element_t我在用我的答案.因为我唯一能使用这些功能的是获得type.所以*_t助手才有意义.

这让我想到了我的问题,为什么using alias is_same_vC++ 14中没有?我唯一使用is_same的是它value.也许is_same通常不用于模板声明?

c++ templates helper c++14 c++17

9
推荐指数
2
解决办法
2538
查看次数

C++是否有标准的编译时类型容器?

(这个问题有一个Nim的答案,提到了boost :: mpl :: map.)

标准C++中是否有可以保存类型的编译时容器?

一个用法示例是:

compiler::vector foo{char, short, long, long long};

template <int N>
void bar(foo[N] param){/*do something and return foo[N]*/}
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
927
查看次数