2
對於Foo
類型,我想在boost::variant
中使用,我想將默認構造函數設置爲private
,因爲它只能被boost::variant
調用。boost :: variant作爲朋友類
可悲的是我還沒能弄清楚的boost::variant
聲明魔術和簡單的聲明
struct Foo {
private:
Foo();
template <class T1, class T2>
friend class boost::variant<T1, T2>;
};
沒有任何編譯。有沒有辦法做到這一點,或者我需要保留Foo()
public
?
我覺得這沒有保證實體化代碼'提振:: variant'本身,而不是它的輔助類之一。但我沒有看過執行。也許它是文檔界面的一部分。 – 2015-04-02 09:51:38
@ Cheersandhth.-Alf好點。我回答了「如何結合boost :: variant',」不是更廣泛的「如何使用'boost :: variant'的私有ctor。」我會把它留給OP來判斷它是否適用於他們;我願意通過更好的答案來解決問題,並且/或者在發現問題的情況下撤回我的答案。 – Angew 2015-04-02 09:54:19
我檢查了'boost :: variant'的實例化,之前:)。也就是說,該提議至少會在標識符爲'BOOST_PP_REPEAT_1_class'的VS2010上引發語法錯誤。 – abergmeier 2015-04-02 10:30:29