没有成员的类的惯用用法,只在构造时起作用
Idiom for class with no members which only does anything on construction?
我想要一个"什么都没有"的类,你不能"用它做任何事情",但是当它的一个实例被构造时,会发生一些有趣的事情。当然,我可以对它进行编码,比如
class MyIdiom final {
MyIdiom() { /* magic goes here */ }
/* maybe unnecessary? */
MyIdiom(const MyIdiom&) = delete;
operator=(const MyIdiom& other) = delete;
}
但我想知道是否有一些常用的库的一部分,以及其他类似的"退化类"。
注意:由于人们似乎过于关心这样一个类的使用,假设它是类似
的东西template <typename F> class MyIdiom final {
MyIdiom(F f) { f(); }
}
#define STATIC_BLOCK(_f)
auto MyIdiom<decltype(_f)> _myidiom_ # _f # _ # __LINE__ (_f);
如果你的对象只在构造时做一些事情,并且永远不会用于其他任何事情,那么你几乎可以用与构造函数具有相同参数的方法(即void
)替换整个类。我称之为"不必要的复杂"。
另一方面,我猜它可能在一些编译时的使用情况,如…
template<some things happening here>
MyIdiom() { }
以便在请求特定的元素时执行模板魔术。目前,除了在入侵有状态TMP时设置标志之外,我想不出任何其他方法来使其有用。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- 简单的 SDL_GetTimer() 用法 - 为什么它不起作用?
- boost::bind in boost::lambda 的嵌套用法不起作用
- 没有成员的类的惯用用法,只在构造时起作用