簡體   English   中英

在編譯時檢測類是否具有成員變量或函數

[英]Detecting at compile-time whether a class has a member variabe or function

我想在編譯時類是否檢測FooBar任何變量value或者成員變量initValue()

struct Foo
{
    static const int value;
    static int initValue();
};

struct Bar
{
};

我發現了一些BOOST和BOOST MPL類和工具,例如BOOST_MPL_HAS_XXX_TRAIT_DEFvalid_member_metafunction似乎只是這樣做,但不確定使用哪個。 我知道有可能推出我自己的檢測器,但我不願意。

找到了。 Boost TTI庫中的has_static_member_datahas_static_member_function

#include <boost/tti/has_static_member_data.hpp>
BOOST_TTI_HAS_STATIC_MEMBER_DATA( value ) // Generates class template has_static_member_data_value
...
has_static_member_data_value<Foo, int>::value;  // returns true
has_static_member_data_value<Bar, int>::value;  // returns false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM