|
Lines 430-437
bool operator > (const U &lhs, const TracedValue<T> &rhs)
|
Link Here
|
|---|
|
| 430 |
/** |
430 |
/** |
| 431 |
* Infix arithmetic operator for TracedValue. |
431 |
* Infix arithmetic operator for TracedValue. |
| 432 |
* |
432 |
* |
| 433 |
* This returns the arithmetic result in a new TracedValue, |
433 |
* This returns the arithmetic result in its natural underlying raw data type. |
| 434 |
* which has no Callback connected. |
|
|
| 435 |
* |
434 |
* |
| 436 |
* \tparam T \deduced The underlying type held by the left-hand argument. |
435 |
* \tparam T \deduced The underlying type held by the left-hand argument. |
| 437 |
* \tparam U \deduced The underlying type held by the right-hand argument. |
436 |
* \tparam U \deduced The underlying type held by the right-hand argument. |
|
Lines 441-632
bool operator > (const U &lhs, const TracedValue<T> &rhs)
|
Link Here
|
|---|
|
| 441 |
* the underlying values. |
440 |
* the underlying values. |
| 442 |
*/ |
441 |
*/ |
| 443 |
template <typename T, typename U> |
442 |
template <typename T, typename U> |
| 444 |
TracedValue<T> operator + (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
443 |
auto operator + (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() + rhs.Get()) { |
| 445 |
TRACED_VALUE_DEBUG ("x+x"); |
444 |
TRACED_VALUE_DEBUG ("x+x"); |
| 446 |
return TracedValue<T> (lhs.Get () + rhs.Get ()); |
445 |
return lhs.Get () + rhs.Get (); |
| 447 |
} |
446 |
} |
| 448 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
447 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 449 |
template <typename T, typename U> |
448 |
template <typename T, typename U> |
| 450 |
TracedValue<T> operator + (const TracedValue<T> &lhs, const U &rhs) { |
449 |
auto operator + (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() + rhs) { |
| 451 |
TRACED_VALUE_DEBUG ("x+"); |
450 |
TRACED_VALUE_DEBUG ("x+"); |
| 452 |
return TracedValue<T> (lhs.Get () + rhs); |
451 |
return lhs.Get () + rhs; |
| 453 |
} |
452 |
} |
| 454 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
453 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 455 |
template <typename T, typename U> |
454 |
template <typename T, typename U> |
| 456 |
TracedValue<T> operator + (const U &lhs, const TracedValue<T> &rhs) { |
455 |
auto operator + (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs + rhs.Get()) { |
| 457 |
TRACED_VALUE_DEBUG ("+x"); |
456 |
TRACED_VALUE_DEBUG ("+x"); |
| 458 |
return TracedValue<T> (lhs + rhs.Get ()); |
457 |
return lhs + rhs.Get (); |
| 459 |
} |
458 |
} |
| 460 |
|
459 |
|
| 461 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
460 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 462 |
template <typename T, typename U> |
461 |
template <typename T, typename U> |
| 463 |
TracedValue<T> operator - (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
462 |
auto operator - (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() - rhs.Get()) { |
| 464 |
TRACED_VALUE_DEBUG ("x-x"); |
463 |
TRACED_VALUE_DEBUG ("x-x"); |
| 465 |
return TracedValue<T> (lhs.Get () - rhs.Get ()); |
464 |
return lhs.Get () - rhs.Get (); |
| 466 |
} |
465 |
} |
| 467 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
466 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 468 |
template <typename T, typename U> |
467 |
template <typename T, typename U> |
| 469 |
TracedValue<T> operator - (const TracedValue<T> &lhs, const U &rhs) { |
468 |
auto operator - (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() - rhs) { |
| 470 |
TRACED_VALUE_DEBUG ("x-"); |
469 |
TRACED_VALUE_DEBUG ("x-"); |
| 471 |
return TracedValue<T> (lhs.Get () - rhs); |
470 |
return lhs.Get () - rhs; |
| 472 |
} |
471 |
} |
| 473 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
472 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 474 |
template <typename T, typename U> |
473 |
template <typename T, typename U> |
| 475 |
TracedValue<T> operator - (const U &lhs, const TracedValue<T> &rhs) { |
474 |
auto operator - (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs - rhs.Get()) { |
| 476 |
TRACED_VALUE_DEBUG ("-x"); |
475 |
TRACED_VALUE_DEBUG ("-x"); |
| 477 |
return TracedValue<T> (lhs - rhs.Get ()); |
476 |
return lhs - rhs.Get (); |
| 478 |
} |
477 |
} |
| 479 |
|
478 |
|
| 480 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
479 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 481 |
template <typename T, typename U> |
480 |
template <typename T, typename U> |
| 482 |
TracedValue<T> operator * (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
481 |
auto operator * (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() * rhs.Get()) { |
| 483 |
TRACED_VALUE_DEBUG ("x*x"); |
482 |
TRACED_VALUE_DEBUG ("x*x"); |
| 484 |
return TracedValue<T> (lhs.Get () * rhs.Get ()); |
483 |
return lhs.Get () * rhs.Get (); |
| 485 |
} |
484 |
} |
| 486 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
485 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 487 |
template <typename T, typename U> |
486 |
template <typename T, typename U> |
| 488 |
TracedValue<T> operator * (const TracedValue<T> &lhs, const U &rhs) { |
487 |
auto operator * (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() * rhs) { |
| 489 |
TRACED_VALUE_DEBUG ("x*"); |
488 |
TRACED_VALUE_DEBUG ("x*"); |
| 490 |
return TracedValue<T> (lhs.Get () * rhs); |
489 |
return lhs.Get () * rhs; |
| 491 |
} |
490 |
} |
| 492 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
491 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 493 |
template <typename T, typename U> |
492 |
template <typename T, typename U> |
| 494 |
TracedValue<T> operator * (const U &lhs, const TracedValue<T> &rhs) { |
493 |
auto operator * (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs + rhs.Get()) { |
| 495 |
TRACED_VALUE_DEBUG ("*x"); |
494 |
TRACED_VALUE_DEBUG ("*x"); |
| 496 |
return TracedValue<T> (lhs * rhs.Get ()); |
495 |
return lhs * rhs.Get (); |
| 497 |
} |
496 |
} |
| 498 |
|
497 |
|
| 499 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
498 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 500 |
template <typename T, typename U> |
499 |
template <typename T, typename U> |
| 501 |
TracedValue<T> operator / (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
500 |
auto operator / (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() / rhs.Get()) { |
| 502 |
TRACED_VALUE_DEBUG ("x/x"); |
501 |
TRACED_VALUE_DEBUG ("x/x"); |
| 503 |
return TracedValue<T> (lhs.Get () / rhs.Get ()); |
502 |
return lhs.Get () / rhs.Get (); |
| 504 |
} |
503 |
} |
| 505 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
504 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 506 |
template <typename T, typename U> |
505 |
template <typename T, typename U> |
| 507 |
TracedValue<T> operator / (const TracedValue<T> &lhs, const U &rhs) { |
506 |
auto operator / (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() / rhs) { |
| 508 |
TRACED_VALUE_DEBUG ("x/"); |
507 |
TRACED_VALUE_DEBUG ("x/"); |
| 509 |
return TracedValue<T> (lhs.Get () / rhs); |
508 |
return lhs.Get () / rhs; |
| 510 |
} |
509 |
} |
| 511 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
510 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 512 |
template <typename T, typename U> |
511 |
template <typename T, typename U> |
| 513 |
TracedValue<T> operator / (const U &lhs, const TracedValue<T> &rhs) { |
512 |
auto operator / (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs / rhs.Get()) { |
| 514 |
TRACED_VALUE_DEBUG ("/x"); |
513 |
TRACED_VALUE_DEBUG ("/x"); |
| 515 |
return TracedValue<T> (lhs / rhs.Get ()); |
514 |
return lhs / rhs.Get (); |
| 516 |
} |
515 |
} |
| 517 |
|
516 |
|
| 518 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
517 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 519 |
template <typename T, typename U> |
518 |
template <typename T, typename U> |
| 520 |
TracedValue<T> operator % (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
519 |
auto operator % (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() % rhs.Get()) { |
| 521 |
TRACED_VALUE_DEBUG ("x%x"); |
520 |
TRACED_VALUE_DEBUG ("x%x"); |
| 522 |
return TracedValue<T> (lhs.Get () % rhs.Get ()); |
521 |
return lhs.Get () % rhs.Get (); |
| 523 |
} |
522 |
} |
| 524 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
523 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 525 |
template <typename T, typename U> |
524 |
template <typename T, typename U> |
| 526 |
TracedValue<T> operator % (const TracedValue<T> &lhs, const U &rhs) { |
525 |
auto operator % (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() % rhs) { |
| 527 |
TRACED_VALUE_DEBUG ("x%"); |
526 |
TRACED_VALUE_DEBUG ("x%"); |
| 528 |
return TracedValue<T> (lhs.Get () % rhs); |
527 |
return lhs.Get () % rhs; |
| 529 |
} |
528 |
} |
| 530 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
529 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 531 |
template <typename T, typename U> |
530 |
template <typename T, typename U> |
| 532 |
TracedValue<T> operator % (const U &lhs, const TracedValue<T> &rhs) { |
531 |
auto operator % (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs % rhs.Get()) { |
| 533 |
TRACED_VALUE_DEBUG ("%x"); |
532 |
TRACED_VALUE_DEBUG ("%x"); |
| 534 |
return TracedValue<T> (lhs % rhs.Get ()); |
533 |
return lhs % rhs.Get (); |
| 535 |
} |
534 |
} |
| 536 |
|
535 |
|
| 537 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
536 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 538 |
template <typename T, typename U> |
537 |
template <typename T, typename U> |
| 539 |
TracedValue<T> operator ^ (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
538 |
auto operator ^ (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() ^ rhs.Get()) { |
| 540 |
TRACED_VALUE_DEBUG ("x^x"); |
539 |
TRACED_VALUE_DEBUG ("x^x"); |
| 541 |
return TracedValue<T> (lhs.Get () ^ rhs.Get ()); |
540 |
return lhs.Get () ^ rhs.Get (); |
| 542 |
} |
541 |
} |
| 543 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
542 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 544 |
template <typename T, typename U> |
543 |
template <typename T, typename U> |
| 545 |
TracedValue<T> operator ^ (const TracedValue<T> &lhs, const U &rhs) { |
544 |
auto operator ^ (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() ^ rhs) { |
| 546 |
TRACED_VALUE_DEBUG ("x^"); |
545 |
TRACED_VALUE_DEBUG ("x^"); |
| 547 |
return TracedValue<T> (lhs.Get () ^ rhs); |
546 |
return lhs.Get () ^ rhs; |
| 548 |
} |
547 |
} |
| 549 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
548 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 550 |
template <typename T, typename U> |
549 |
template <typename T, typename U> |
| 551 |
TracedValue<T> operator ^ (const U &lhs, const TracedValue<T> &rhs) { |
550 |
auto operator ^ (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs ^ rhs.Get()) { |
| 552 |
TRACED_VALUE_DEBUG ("^x"); |
551 |
TRACED_VALUE_DEBUG ("^x"); |
| 553 |
return TracedValue<T> (lhs ^ rhs.Get ()); |
552 |
return lhs ^ rhs.Get (); |
| 554 |
} |
553 |
} |
| 555 |
|
554 |
|
| 556 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
555 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 557 |
template <typename T, typename U> |
556 |
template <typename T, typename U> |
| 558 |
TracedValue<T> operator | (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
557 |
auto operator | (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() | rhs.Get()) { |
| 559 |
TRACED_VALUE_DEBUG ("x|x"); |
558 |
TRACED_VALUE_DEBUG ("x|x"); |
| 560 |
return TracedValue<T> (lhs.Get () | rhs.Get ()); |
559 |
return lhs.Get () | rhs.Get (); |
| 561 |
} |
560 |
} |
| 562 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
561 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 563 |
template <typename T, typename U> |
562 |
template <typename T, typename U> |
| 564 |
TracedValue<T> operator | (const TracedValue<T> &lhs, const U &rhs) { |
563 |
auto operator | (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() | rhs) { |
| 565 |
TRACED_VALUE_DEBUG ("x|"); |
564 |
TRACED_VALUE_DEBUG ("x|"); |
| 566 |
return TracedValue<T> (lhs.Get () | rhs); |
565 |
return lhs.Get () | rhs; |
| 567 |
} |
566 |
} |
| 568 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
567 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 569 |
template <typename T, typename U> |
568 |
template <typename T, typename U> |
| 570 |
TracedValue<T> operator | (const U &lhs, const TracedValue<T> &rhs) { |
569 |
auto operator | (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs | rhs.Get()) { |
| 571 |
TRACED_VALUE_DEBUG ("|x"); |
570 |
TRACED_VALUE_DEBUG ("|x"); |
| 572 |
return TracedValue<T> (lhs | rhs.Get ()); |
571 |
return lhs | rhs.Get (); |
| 573 |
} |
572 |
} |
| 574 |
|
573 |
|
| 575 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
574 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 576 |
template <typename T, typename U> |
575 |
template <typename T, typename U> |
| 577 |
TracedValue<T> operator & (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
576 |
auto operator & (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() & rhs.Get()) { |
| 578 |
TRACED_VALUE_DEBUG ("x&x"); |
577 |
TRACED_VALUE_DEBUG ("x&x"); |
| 579 |
return TracedValue<T> (lhs.Get () & rhs.Get ()); |
578 |
return lhs.Get () & rhs.Get (); |
| 580 |
} |
579 |
} |
| 581 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
580 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 582 |
template <typename T, typename U> |
581 |
template <typename T, typename U> |
| 583 |
TracedValue<T> operator & (const TracedValue<T> &lhs, const U &rhs) { |
582 |
auto operator & (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() & rhs) { |
| 584 |
TRACED_VALUE_DEBUG ("x&"); |
583 |
TRACED_VALUE_DEBUG ("x&"); |
| 585 |
return TracedValue<T> (lhs.Get () & rhs); |
584 |
return lhs.Get () & rhs; |
| 586 |
} |
585 |
} |
| 587 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
586 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 588 |
template <typename T, typename U> |
587 |
template <typename T, typename U> |
| 589 |
TracedValue<T> operator & (const U &lhs, const TracedValue<T> &rhs) { |
588 |
auto operator & (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs & rhs.Get()) { |
| 590 |
TRACED_VALUE_DEBUG ("&x"); |
589 |
TRACED_VALUE_DEBUG ("&x"); |
| 591 |
return TracedValue<T> (lhs & rhs.Get ()); |
590 |
return lhs & rhs.Get (); |
| 592 |
} |
591 |
} |
| 593 |
|
592 |
|
| 594 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
593 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 595 |
template <typename T, typename U> |
594 |
template <typename T, typename U> |
| 596 |
TracedValue<T> operator << (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
595 |
auto operator << (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() << rhs.Get()) { |
| 597 |
TRACED_VALUE_DEBUG ("x<<x"); |
596 |
TRACED_VALUE_DEBUG ("x<<x"); |
| 598 |
return TracedValue<T> (lhs.Get () << rhs.Get ()); |
597 |
return lhs.Get () << rhs.Get (); |
| 599 |
} |
598 |
} |
| 600 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
599 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 601 |
template <typename T, typename U> |
600 |
template <typename T, typename U> |
| 602 |
TracedValue<T> operator << (const TracedValue<T> &lhs, const U &rhs) { |
601 |
auto operator << (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() << rhs) { |
| 603 |
TRACED_VALUE_DEBUG ("x<<"); |
602 |
TRACED_VALUE_DEBUG ("x<<"); |
| 604 |
return TracedValue<T> (lhs.Get () << rhs); |
603 |
return lhs.Get () << rhs; |
| 605 |
} |
604 |
} |
| 606 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
605 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 607 |
template <typename T, typename U> |
606 |
template <typename T, typename U> |
| 608 |
TracedValue<T> operator << (const U &lhs, const TracedValue<T> &rhs) { |
607 |
auto operator << (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs << rhs.Get()) { |
| 609 |
TRACED_VALUE_DEBUG ("<<x"); |
608 |
TRACED_VALUE_DEBUG ("<<x"); |
| 610 |
return TracedValue<T> (lhs << rhs.Get ()); |
609 |
return lhs << rhs.Get (); |
| 611 |
} |
610 |
} |
| 612 |
|
611 |
|
| 613 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
612 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 614 |
template <typename T, typename U> |
613 |
template <typename T, typename U> |
| 615 |
TracedValue<T> operator >> (const TracedValue<T> &lhs, const TracedValue<U> &rhs) { |
614 |
auto operator >> (const TracedValue<T> &lhs, const TracedValue<U> &rhs) -> decltype(lhs.Get() >> rhs.Get()) { |
| 616 |
TRACED_VALUE_DEBUG ("x>>x"); |
615 |
TRACED_VALUE_DEBUG ("x>>x"); |
| 617 |
return TracedValue<T> (lhs.Get () >> rhs.Get ()); |
616 |
return lhs.Get () >> rhs.Get (); |
| 618 |
} |
617 |
} |
| 619 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
618 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 620 |
template <typename T, typename U> |
619 |
template <typename T, typename U> |
| 621 |
TracedValue<T> operator >> (const TracedValue<T> &lhs, const U &rhs) { |
620 |
auto operator >> (const TracedValue<T> &lhs, const U &rhs) -> decltype(lhs.Get() >> rhs) { |
| 622 |
TRACED_VALUE_DEBUG ("x>>"); |
621 |
TRACED_VALUE_DEBUG ("x>>"); |
| 623 |
return TracedValue<T> (lhs.Get () >> rhs); |
622 |
return lhs.Get () >> rhs; |
| 624 |
} |
623 |
} |
| 625 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
624 |
/** \copydoc operator+(const TracedValue<T>&lhs,const TracedValue<U>&rhs) */ |
| 626 |
template <typename T, typename U> |
625 |
template <typename T, typename U> |
| 627 |
TracedValue<T> operator >> (const U &lhs, const TracedValue<T> &rhs) { |
626 |
auto operator >> (const U &lhs, const TracedValue<T> &rhs) -> decltype(lhs >> rhs.Get()) { |
| 628 |
TRACED_VALUE_DEBUG (">>x"); |
627 |
TRACED_VALUE_DEBUG (">>x"); |
| 629 |
return TracedValue<T> (lhs >> rhs.Get ()); |
628 |
return lhs >> rhs.Get (); |
| 630 |
} |
629 |
} |
| 631 |
|
630 |
|
| 632 |
/** |
631 |
/** |
|
Lines 743-769
TracedValue<T> &operator ^= (TracedValue<T> &lhs, const U &rhs) {
|
Link Here
|
|---|
|
| 743 |
* the underlying values. |
742 |
* the underlying values. |
| 744 |
*/ |
743 |
*/ |
| 745 |
template <typename T> |
744 |
template <typename T> |
| 746 |
TracedValue<T> operator + (const TracedValue<T> &lhs) { |
745 |
T operator + (const TracedValue<T> &lhs) { |
| 747 |
TRACED_VALUE_DEBUG ("(+x)"); |
746 |
TRACED_VALUE_DEBUG ("(+x)"); |
| 748 |
return TracedValue<T> (+lhs.Get ()); |
747 |
return +lhs.Get (); |
| 749 |
} |
748 |
} |
| 750 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
749 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
| 751 |
template <typename T> |
750 |
template <typename T> |
| 752 |
TracedValue<T> operator - (const TracedValue<T> &lhs) { |
751 |
T operator - (const TracedValue<T> &lhs) { |
| 753 |
TRACED_VALUE_DEBUG ("(-x)"); |
752 |
TRACED_VALUE_DEBUG ("(-x)"); |
| 754 |
return TracedValue<T> (-lhs.Get ()); |
753 |
return -lhs.Get (); |
| 755 |
} |
754 |
} |
| 756 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
755 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
| 757 |
template <typename T> |
756 |
template <typename T> |
| 758 |
TracedValue<T> operator ~ (const TracedValue<T> &lhs) { |
757 |
T operator ~ (const TracedValue<T> &lhs) { |
| 759 |
TRACED_VALUE_DEBUG ("(~x)"); |
758 |
TRACED_VALUE_DEBUG ("(~x)"); |
| 760 |
return TracedValue<T> (~lhs.Get ()); |
759 |
return ~lhs.Get (); |
| 761 |
} |
760 |
} |
| 762 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
761 |
/** \copydoc operator+(const TracedValue<T>&lhs) */ |
| 763 |
template <typename T> |
762 |
template <typename T> |
| 764 |
TracedValue<T> operator ! (const TracedValue<T> &lhs) { |
763 |
T operator ! (const TracedValue<T> &lhs) { |
| 765 |
TRACED_VALUE_DEBUG ("(!x)"); |
764 |
TRACED_VALUE_DEBUG ("(!x)"); |
| 766 |
return TracedValue<T> (!lhs.Get ()); |
765 |
return !lhs.Get (); |
| 767 |
} |
766 |
} |
| 768 |
|
767 |
|
| 769 |
/**@}*/ // \ingroup tracing |
768 |
/**@}*/ // \ingroup tracing |