1
使用的朋友操作成語:你可以引用一個在struct中定義的朋友操作符嗎?
struct Foo {
friend Foo operator+(Foo, Foo) { return {}; }
};
// which is synonymous to the slightly less pretty:
struct Bar {
friend Bar operator+(Bar, Bar); // optional
};
inline Bar operator+(Bar, Bar) { return {}; }
我基本上希望operator+
爲Foo
的函數指針。
隨着Bar
我可以說以下內容:
auto fn = static_cast<Bar (*)(Bar, Bar)>(&operator+);
fn({},{});
但是,如果我做同樣的Foo
版本,g ++以及鐺++告訴我:
// g++ 4.8.3
error: ‘operator+’ not defined
auto f = static_cast<Foo (*)(Foo, Foo)>(&operator+);
^
// clang++ 3.2-11
error: use of undeclared 'operator+'
auto f = static_cast<Foo (*)(Foo, Foo)>(&operator+);
^
這是本質上是不可能的或者是有一種方法可以參考該功能?
內聯友元函數只能通過ADL可見。順便說一句,如果您不知道,可以在很多情況下用'{}'替換'Type {}'。 – chris
@chris:是的,你說的是'{}'的事。感謝您指出。 – bitmask