- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
if (std::is_same<T, float>::value)
{
float a;
somefunc_float(x,len,&a);
}
上面的代码来自一个模板,它接受一个指针 x ,它可以是一些原始数据类型的指针(例如 x 是 double *
, float *
或 int *
),和 somefunc_float
来自库,只能接受一种特定数据类型 x
(上例中的 float *
),编译器总是报错,告诉我输入的数据类型 (x) 不正确,就像表达式 std::is_same<T, float>::value
一样。根本没用吗?
最佳答案
现在我们有了 C++17,您的方法变得有效了。然而,需要一个小而重要的修正:
// is_same_v is an alias for is_same<...>::value
if constexpr (std::is_same_v<T, float>) {
float a;
somefunc_float(x,len,&a);
}
if constexpr
是常规 if 语句的编译时评估变体,在某种程度上类似于预处理器 #if
。查看documentation of if了解更多信息。
关于c++ - 模板和 is_same() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309525/
为什么这段代码会产生错误的输出? //this-type.cpp #include #include using namespace std; template class A { public
考虑以下代码: struct A { using type = int; using reference = int&; }; static_assert(std::is_same_v
is_same 对代码性能有影响吗?我在我的代码中多次使用它来检查我是否必须使用 std::less 或 std::greater 并且根据它们我必须检索特定值。我的测试是否足以证明 std::is_
if (std::is_same::value) { float a; somefunc_float(x,len,&a); } 上面的代码来自一个模板,
*编辑:不知何故我认为编译器正在创建 B正如A ,导致我假设 is_same 应该如何评估它们,而不管继承/派生。我的错 :( 对不起,随后的误解:\* 制作一些元函数来检查我的自定义类型,并遇到了这
我的 enable_if 语句变得很长,所以我想以某种方式进行 typedef。我不确定最好的方法是什么。 我试过了,还是不行 template struct isValidImageFormat {
我对以下问题感到困惑。我想写一些特征结构来测试某个类是否派生自另一个类。这可以通过 boost::is_base_of<> 来解决。但是,我要测试的基类有一个未定义的模板参数。 下面是一些代码示例:
我在将 std::is_same 效用函数与右值和左值引用结合使用时遇到了一个奇怪的行为。 考虑这个检查变量 t 类型的函数模板。 我正在使用 VS 2013: struct Test {}; tem
在一个项目中,我发现了一种保持 DRY 的可能性,因为除了一些小部分之外,对于模板的模板特化,很多代码可以保持不变。这是我目前正在做的一个小工作示例,用于检查我使用的是哪个模板类: template
我有一个函数模板,我想限制可以实例化它的类型集。 我是这样写的: template void DoSomething( /* ... Some parameters involving T ...
我知道constexpr函数不必在编译时求值,但如果可能的话。是下面的条件if是否在编译时评估? template inline std::string toString(const T& arg,
我正在使用第三方 API,其中包含一个包含一组 typedef 的头文件。在过去的 4 年里,一些 typedef 发生了微小的变化(例如,在 unsigned/signed 之间切换,从 int 变
这个问题在这里已经有了答案: Using commas inside a macro without parenthesis: How can I mix and match with a temp
相关问题:template-function-is-same-in-template-classes 我对指针“this”的类型感到有点不安(gcc 4.7.2,c++11)。原则上,例如C类型的非常
我的代码片段是: namespace serialization { struct output_stream { ///// void write(c
这个问题在这里已经有了答案: using std::is_same, why my function still can't work for 2 types (4 个答案) 关闭 2 年前。 考虑
在下面的代码中,为什么调用fun的两种方式呢? : fun(num)和 fun(num) , 编译时给出不同的结果? #include using namespace std; template::
是否可以像下面那样在没有模板特化的情况下进行编译? template class A { public: #if std::is_same void has_int() {} #elif
这个问题在这里已经有了答案: Accessing a class member in an if statement using std::is_same (2 个答案) using std::is
以下代码是 gcc 错误吗?检查 T 类型是否为尚未定义的 Circle 类,返回 false。 #include using namespace std; // uncomment to work
我是一名优秀的程序员,十分优秀!