哪些类型可以转换为std::any
What types are convertible to std::any?
在编写clang插件时,我注意到类型为llvm::cl::opt<T>
的对象无法转换为std::any
,即以下代码段无法编译:
#include <any>
#include <string>
#include "llvm/Support/CommandLine.h"
int main()
{
llvm::cl::opt<std::string> opt("o");
std::any opt_any = opt; // doesn't work!
}
我想知道为什么在这个特定的实例中这是不可能的,以及一个类型通常必须填写什么标准才能转换为std::any
。
llvm::cl::opt
不可复制。复制构造函数和复制赋值操作符都标记为delete
。
std::any
在构造和赋值中要求类型是可复制的。
您可以使用std::unique_ptr<llvm::cl::opt<std::string>>
或std::shared_ptr<llvm::cl::opt<std::string>>
,甚至std::reference_wrapper
,这取决于您希望如何处理对象的生存期。
相关文章:
- 将无符号char*转换为std::istream*C++
- 将 int 数组转换为 std::vector<int*>
- 如何将这个std::字符串转换为std::基本字符串
- 哪些类型可以转换为std::any
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将函数参数"const char*"转换为"std::string_view"是
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 字符转换功能 std::isupper() & std::islower() C++17
- 将函数包装器转换为 std::function
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- std::转换move构造函数的模板专业化的变体
- STD ::转换如何用特定值初始化函子
- 对C++字符串使用 std 转换
- 等价于元组的std::转换
- std::转换为任意容器
- std::转换顺序保证
- std::转换产生奇怪的输出