- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为什么这段代码会产生错误的输出?
//this-type.cpp
#include <iostream>
#include <type_traits>
using namespace std;
template<typename testype>
class A
{
public:
A()
{
cout << boolalpha;
cout << is_same<decltype(*this), A<int>>::value << endl;
}
};
class B : public A<int>
{
};
int main()
{
B b;
}
输出:
$ g++ -std=c++11 this-type.cpp
$ ./a.out
false
A 到 B 中的“*this”的类型是 A
最佳答案
*this
是 A
类型的左值,因此 decltype(*this)
将给出引用类型 A &
。回想一下左值上的 decltype
给出了引用类型:
cout << is_same<decltype(*this), A<int>>::value << endl;
cout << is_same<decltype(*this), A<int> &>::value << endl;
输出:
false
true
关于c++ - 模板类中的模板函数 is_same,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843222/
为什么这段代码会产生错误的输出? //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
我是一名优秀的程序员,十分优秀!