不幸的是,你不能做这样的事情:
typedef constexpr int cint;
这并不是世界末日......只需在每次需要使用 constexpr
时输入额外的 9 个字符(如果包含空格,则为 10 个字符)。
但是我已经创建了一个类,并且我希望仅能够创建该类的 constexpr 版本(使用非 constexpr 版本没有任何意义)。
所以我的计划是创建具有不可访问的命名空间的类,然后在我的主命名空间中创建一个 constexpr
typedef,如下所示:
namespace MainNameSpace{
namespace detail{
class MyClass{};
}
typedef constexpr detail::MyClass MyClass;
}
不幸的是,我发现这是无法做到的......有什么方法可以达到类似的效果(不使用宏)?
最佳答案
typedef constexprdetail::MyClass MyClass;
没有多大意义。您正在建立一个约定,即 MyClass
是一个有效的 constexpr
类,并且您只能在 constexpr
上下文中使用它,但没有办法编译器可以仅通过该语句来保证...这一切都取决于 MyClass
的实现方式以及您在什么上下文中使用它。它是多余且毫无意义的。如果您对“编译时字符串类”感兴趣,请查看 string_view
.
关于c++ - 常量表达式类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37505018/