据我所知,静态反射目前在 C++26 的路线图上。
\n反射TS提出了基于类型的语法,但同时也提出了基于值的语法。在P2560 Mat\xc3\xba\xc5\xa1 Chochl\xc4\xb1\xcc\x81k 中,对两种方法进行了比较。
\n是否已经决定哪种方法可能标准化?
\n获取控制器的标准return语句:
return View("Index");
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个东西编译时安全?使用静态反射或其他一些技巧?
我正在开发一个大量使用静态多态性的项目。我感兴趣的一个特定用例可以通过静态反射来实现,但我们在 C++ 中仍然没有这种功能。用例看起来像这样:我有一个函数可以从二进制文件读取/写入数据结构:
template <typename data_t> void write_binary(const my_type_t<data_t>& obj)
{
//write a binary file...
}
template <typename data_t> void read_binary(my_type_t<data_t>& obj)
{
//read a binary file...
}
Run Code Online (Sandbox Code Playgroud)
我想强制我只能从相同类型输出的文件中读取数据,例如my_type_t<std::string>只能从 等输出的二进制文件中读取数据my_type_t<std::string>。我想要执行此操作的方法是向二进制文件添加一个小标头确定了 的专业化data_t:
template <typename data_t> void write_binary(const my_type_t<data_t>& obj)
{
//write header type_name(data_t)
//write a binary file...
}
template <typename data_t> void read_binary(my_type_t<data_t>& obj)
{
//read header
//assert header == type_name(data_t)
//read a binary file...
}
Run Code Online (Sandbox Code Playgroud)
我知道它的存在typeid(data_t).name()以及分解它的各种方法,但我想要由标准定义的东西。
所以我的确切问题是:对于任何两种类型type1_t和type2_t,是否存在任何 …