c++ - C++ 中成员数量可变的模板类

标签 c++ templates c++11

这更多的是对 C++ 模板的好奇,而不是有用的东西。它应该是一个成员数量可变的类。这是否有可能被编译为直接成员(member)访问?

// type equality
template <typename X, typename Y> struct Eq { static const bool out = false; };
template <typename X> struct Eq<X, X> { static const bool out = true; };

template <typename First, typename... Rest>
class Table {
    First _field;
    Table<Rest...> _nextTable;
public:
    template <typename T>
    T &get() {
        if (Eq<First, T>::out)
            return (T&)_field;

        return (T&)_nextTable.get<T>();
    }
};

template<typename First>
class Table<First> {
    First _field;
public:
    template <typename T>
    T &get() {
        return _field;
    }
};

int main() {
    Table<int, double> table;
    table.get<double>() = 11.1;
}

最佳答案

return (T&)_nextTable.template get<T>();

http://en.cppreference.com/w/cpp/language/dependent_name

关于c++ - C++ 中成员数量可变的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411884/

相关文章:

c++ - 使用花括号在 C++ 中初始化变量时出现意外结果

c++ - OS X clang C++11 和 libstdc++ boost 编译问题

c++ - 如何在 C++ 中查找可变类型列表的所有组合

c++ - 使用 std::bind 和 std::placeholders 的可变模板工厂

c++ - TextureCache::addImageAsync 选择器类型转换问题

javascript - 如何在 CoffeeKup 模板中使用文字 HTML?

C++ 模板, undefined reference

javascript - HTML 模板如何适应后端语言和数据库?

c++ - 为什么我们不能在模板静态成员初始化中使用auto?

c++ - 递归斐波那契