我想用一個指針指向一個類成員作爲模板參數爲:指針類成員作爲模板參數
template <class Class, class Result, Result Class::*Member>
struct MyStruct {
// ...
};
使用這種結構就像MyStruct<SomeClass, SomeResult, &SomeClass::value> variable
作品不錯,但我不喜歡我必須指定SomeClass
和SomeResult
。
如果可能,我想使用MyStruct<&SomeClass::value> variable
,但不會失去傳遞任何類並具有任何結果類型的能力。
我嘗試以下,但語法是非法的:
template <class Class, class Result>
template <Result Class::*Member>
struct MyStruct {
// ...
};
error: too many template-parameter-lists
我使用一個輔助函數(即沒有實際在Clang的工作,但是由GCC拒絕)嘗試:
template <class Class, class Result>
static constexpr auto makeMyStruct(Result Class::*member) ->
MyStruct<Class, Result, member> {
// ...
}
error: use of parameter `member' outside function body
error: template argument 3 is invalid
是否可以有一個簡單的MyStruct<&SomeClass::value>
,如果是這樣,怎麼樣?
相關問題沒有解決不了我的問題:
- Pointer to class member as template parameter
- C++0x error with constexpr and returning template function
Dup? http://stackoverflow.com/questions/5628121/is-it-possible-to-emulate-templateauto-x – GManNickG 2013-03-01 01:38:19
@GManNickG我不確定我的問題是否歸結爲其他問題。我的範圍更窄,使用宏我不會太高興。 – kay 2013-03-01 01:43:35
術語是*指向成員的*,而不是*引用*給成員。引用和指針在語言上有很大不同(好吧,不是*不同,但仍不相同) – 2013-03-01 04:55:30