我很喜欢增加可变参数模板,并开始摆弄这个新功能.我试图了解std::index_sequences 的实现细节(用于元组实现).我看到那里的示例代码,但我真的想要逐步解释如何std::index_sequence编码和每个阶段的元编程主题.想真的傻了:)
c++ templates template-meta-programming variadic-templates c++14
"if"语句的cppreference页面;
https://en.cppreference.com/w/cpp/language/if
给出以下例子;
除了由init语句(如果初始化语句是一个声明),并通过名称申报条件(如果条件是一个声明)声明的名字都在相同的范围内,这也是两个语句块引用的范围
std::map<int, std::string> m;
if (auto it = m.find(10); it != m.end()) { return it->size(); }
Run Code Online (Sandbox Code Playgroud)
那是一个错字,不是吗?我不会错过这里的任何东西,它应该是;
it->second.size();
Run Code Online (Sandbox Code Playgroud)
要么
it->first;
Run Code Online (Sandbox Code Playgroud)
没有?
我有一个使用CRTP的场景.下面的伪代码:
template <typename T>
class Base {}
class Derived1 : Base < Derived1 > {}
class Derived2 : Base < Derived2 > {}
Run Code Online (Sandbox Code Playgroud)
一切正常,除非我介绍unique_ptr循环.我希望代码中的unique_ptrto Base和其他地方使用它来获取a Derived1或Derived2指针的所有权.
// declaration - this is the problem - wont compile.
std::unique_ptr<Base> base_unique_ptr;
// cpp , elsewhere.
base_unique_ptr.reset(new Derived1());
Run Code Online (Sandbox Code Playgroud)
要么
base_unique_ptr.reset(new Derived2());
Run Code Online (Sandbox Code Playgroud)
我有麻烦吗?我不想改变现有代码的使用unique_ptr.