Luc*_*uca 4 c++ templates c++11
请参阅示例:可在此处编译
// Example program
#include <iostream>
#include <string>
class Foo {
public:
class Nes{};
void Nes(){}
using Ptr = void(Nes::*)();
};
template<typename T> class Bar
{
public:
using Ptr = void(T::Nes::*)();
};
int main()
{
using F = void(Foo::Nes::*)();
F compiles;
Bar<Foo>::Ptr notCompiles;
std::cout << typeid(Foo).name();
}
Run Code Online (Sandbox Code Playgroud)
如何告诉编译器 Nes 应该是类而不是方法?
在这种情况下:
template<typename T> class Bar {
public:
using Ptr = typename T::Ptr;
};
Run Code Online (Sandbox Code Playgroud)
如果T没有Ptr类型定义:
template <typename T> class Bar {
public:
using TNes = class T::Nes;
using Ptr = void (TNes::*)();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |