C ++ 0x, пользовательские литералы с оператором «» ()

будет возможен и / или полезно определить оператора »(...) как функция друга?

class Puzzle {
  friend Puzzle operator "" _puzzle(const char*, size_t);
  ...
};
void solve(Puzzle);
int main() {
  solve("oxo,xox"_puzzle);
};

Я думаю о« полезном » Особенно из-за правила, что оператор «» должен быть определен только в пространстве имен - не наименее потому, что идентификаторы, начинающиеся с _ , зарезервированы в глобальном пространстве имен. Это друг , нарушая это правило здесь? Итак, не будет никакой пользы с этим не совсем инкапсуляцией, верно?

5
задан Xeo 5 December 2011 в 23:48
поделиться