多重继承中的派生类的行为类似于聚合
Derived class in multiple inheritance behaves like an aggregate
我可以得到以下代码(也可以在cpp首选项 http://en.cppreference.com/w/cpp/utility/variant/visit 中找到(来编译(https://wandbox.org/permlink/stCFKi0VQlF49Bxr(
#include <type_traits>
#include <utility>
template <typename... Types>
struct Overload : public Types... {
using Types::operator()...;
};
template <typename... Types>
auto make_overload(Types&&... instances) {
return Overload<std::decay_t<Types>...>{std::forward<Types>(instances)...};
}
int main() {
auto overloaded = make_overload([](int) {}, [](double) {});
static_cast<void>(overloaded);
}
上面的代码如何在 C++17 中编译? 它不会在 C++14 中编译。 幕后发生了什么? 另外,为什么可变参数using
声明在 C++14 中不起作用? 这是哪个新功能?
正如你在parameter_pack中读到的,
C++17 推出
以下是所有允许的上下文的列表:[...]
Using-declarations
在使用声明时,省略号可能会出现在声明符列表中,这在从参数包派生时很有用:
template <typename... bases>
struct X : bases... {
using bases::g...;
};
X<B, D> x; // OK: B::g and D::g introduced
相关文章:
- 类似于strcat()的函数出现问题
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 算术运算的结果类似于:C浮点变量中的1/3
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 创建类似于布尔值的变量类型
- 如何在 Arduino 字符串的开头添加元素.类似于 JS unshift();
- Java 中是否有类似于 C++ 中引用类型"&"的内容?
- C++未知长度字符串的数组,其行为类似于 Python 字符串列表
- 如何创建类似于 QVariant 的变体类
- 对于多个字符(如 ETX/STX 对),是否有类似于 std::quote 的东西
- 初始化命名空间中的变量是否类似于将它们初始化为类成员?
- C++中用于结构的纯数组的类似于TableView/DataFrame的通用功能
- 有没有类似于stoi的函数可以用于模板类
- 如何编写一个类似于kernellist_head的c++风格的双链表实现
- 序列化模式类似于boost::序列化
- 构造一个类似于JSON文件c++的字符串
- 多重继承中的派生类的行为类似于聚合
- 如何使更安全的C++变体访问者,类似于切换语句?
- C++ Python 中是否有类似于 help() 的函数
- 使基类指针的行为类似于C++中的派生类