typedef equivalent for int

typedef equivalent for int

本文关键字:int for equivalent typedef      更新时间:2023-10-16

如果我有模板容器,我可以使用 typedef让我在编译时间查找类型:

template <typename T>
struct MyList {
    typedef T Type;
    T get_front() const;
    // ...
};
MyList<char> char_list;
MyList<char>::Type front = char_list.get_front();

在这种情况下,您可以改为声明char front = char_list.get_front();,但有时这可能很有用(例如,包含其他模板类的模板类)。

在我的情况下,模板没有指定打字名称,而是指定int(实际上是 std::size_t):

template <std::size_t N>
struct MyClass {
    // ...
};

我可以在同类中声明的类型中有等效的,这使我可以在课堂之外获得值n?这是使用静态常数的合适场所吗?

现代编译器上的通常方法是:

static const std::size_t value = N;

请注意,如果有人试图进行地址,这将提高不确定的行为。这通常意味着value的地址可能会导致不同的翻译单元的不同位置,但是它的不确定的行为尽管如此。

通常在较旧的编译器上使用的另一种方法,并且不会离开不确定的行为开放开放的门是通过enums

仿真
enum { value = N };

boost.config 提供BOOST_STATIC_CONSTANT宏,该宏将基于编译器的符合度,该宏将解析为一种或另一种方法。它的用法是:

BOOST_STATIC_CONSTANT( std::size_t, value = N );
Div>