View | Details | Raw Unified | Return to bug 2658
Collapse All | Expand All

(-)a/src/core/model/traced-value.h (-70 / +69 lines)
 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

Return to bug 2658