//================================================================================================= /*! // \file src/mathtest/traits/columntrait/ClassTest.cpp // \brief Source file for the ColumnTrait class test // // Copyright (C) 2012-2020 Klaus Iglberger - All Rights Reserved // // This file is part of the Blaze library. You can redistribute it and/or modify it under // the terms of the New (Revised) BSD License. Redistribution and use in source and binary // forms, with or without modification, are permitted provided that the following conditions // are met: // // 1. Redistributions of source code must retain the above copyright notice, this list of // conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright notice, this list // of conditions and the following disclaimer in the documentation and/or other materials // provided with the distribution. // 3. Neither the names of the Blaze development group nor the names of its contributors // may be used to endorse or promote products derived from this software without specific // prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT // SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR // BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH // DAMAGE. */ //================================================================================================= //************************************************************************************************* // Includes //************************************************************************************************* #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace blazetest { namespace mathtest { namespace traits { namespace columntrait { //================================================================================================= // // CONSTRUCTORS // //================================================================================================= //************************************************************************************************* /*!\brief Constructor for the ColumnTrait class test. // // \exception std::runtime_error Error detected. */ ClassTest::ClassTest() { testColumnOperation(); } //************************************************************************************************* //================================================================================================= // // TEST FUNCTIONS // //================================================================================================= //************************************************************************************************* /*!\brief Test of the 'ColumnTrait' class template for column operations. // // \return void // \exception std::runtime_error Error detected. // // This function performs a compile time test of the 'ColumnTrait' class template for column // operations. In case an error is detected, a compilation error is created. */ void ClassTest::testColumnOperation() { using namespace blaze; // StaticMatrix { { using MT = StaticMatrix; using RT = StaticVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StaticMatrix; using RT = StaticVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StaticMatrix; using RT = StaticVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StaticMatrix; using RT = StaticVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // HybridMatrix { { using MT = HybridMatrix; using RT = HybridVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HybridMatrix; using RT = HybridVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HybridMatrix; using RT = HybridVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HybridMatrix; using RT = HybridVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // DynamicMatrix { { using MT = DynamicMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DynamicMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DynamicMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DynamicMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // CustomMatrix { { using MT = CustomMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CustomMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CustomMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CustomMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // UniformMatrix { { using MT = UniformMatrix; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniformMatrix; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniformMatrix; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniformMatrix; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // InitializerMatrix { { using MT = InitializerMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = InitializerMatrix; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // CompressedMatrix { { using MT = CompressedMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CompressedMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CompressedMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = CompressedMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // IdentityMatrix { { using MT = IdentityMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = IdentityMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = IdentityMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = IdentityMatrix; using RT = CompressedVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // ZeroMatrix { { using MT = ZeroMatrix; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = ZeroMatrix; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = ZeroMatrix; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = ZeroMatrix; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // SymmetricMatrix (real) { { using MT = SymmetricMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // SymmetricMatrix (complex) { { using MT = SymmetricMatrix< DynamicMatrix,rowMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix,columnMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix,rowMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< DynamicMatrix,columnMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // SymmetricMatrix (real) { { using MT = SymmetricMatrix< UniformMatrix >; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< UniformMatrix >; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< UniformMatrix >; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< UniformMatrix >; using RT = UniformVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // SymmetricMatrix (real) { { using MT = SymmetricMatrix< ZeroMatrix >; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< ZeroMatrix >; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< ZeroMatrix >; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = SymmetricMatrix< ZeroMatrix >; using RT = ZeroVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // HermitianMatrix (symmetric) { { using MT = HermitianMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // HermitianMatrix (Hermitian) { { using MT = HermitianMatrix< DynamicMatrix,rowMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix,columnMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix,rowMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = HermitianMatrix< DynamicMatrix,columnMajor> >; using RT = DynamicVector,columnVector>; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // LowerMatrix { { using MT = LowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = LowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = LowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = LowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // UniLowerMatrix { { using MT = UniLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // StrictlyLowerMatrix { { using MT = StrictlyLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyLowerMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // UpperMatrix { { using MT = UpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // UniUpperMatrix { { using MT = UniUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = UniUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // StrictlyUpperMatrix { { using MT = StrictlyUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = StrictlyUpperMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } // DiagonalMatrix { { using MT = DiagonalMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DiagonalMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column( std::declval(), 0UL ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DiagonalMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } { using MT = DiagonalMatrix< DynamicMatrix >; using RT = DynamicVector; static_assert( IsSame_v< ColumnTrait_t, RT >, "Non-matching type detected" ); using Expr = RemoveCVRef_t< decltype( column<0UL>( std::declval() ) ) >; static_assert( IsSame_v< ResultType_t, RT >, "Non-matching type detected" ); static_assert( TransposeFlag_v == TransposeFlag_v, "Non-matching transpose flag detected" ); } } } //************************************************************************************************* } // namespace columntrait } // namespace traits } // namespace mathtest } // namespace blazetest //================================================================================================= // // MAIN FUNCTION // //================================================================================================= //************************************************************************************************* int main() { std::cout << " Running ColumnTrait class test..." << std::endl; try { RUN_COLUMNTRAIT_CLASS_TEST; } catch( std::exception& ex ) { std::cerr << "\n\n ERROR DETECTED during ColumnTrait class test:\n" << ex.what() << "\n"; return EXIT_FAILURE; } return EXIT_SUCCESS; } //*************************************************************************************************