select query on Temp table is not returning data in correct order even after specifying index hint In my code, I am creating a temp table using select * into #tempTable. 
Temp table contains the huge number of records and I need to retrieve data from it many times in my code so I created a clustered index on it.
But somehow I am not getting data in correct order as per created index.

I know I can do it simply by putting the order by clause, but my question is why I am not getting data in the correct order even if I am forcing the optimizer to use the particular index?

Below is my sample code:

----------- Sample code ----------------------------

;with CTE1
as (
    select col1
        ,col2
        ,-- - -- - - from table1

    union

    select col1
        ,col2
        ,-- - -- - - from table2
        -- few more tables in union --
    )
    , CTE2
as (
    select *
        ,RowNumber = RowNumber() 
            over (order by case 
                    when @sortOrder = 0
                    then case 
                            when @sortColumn = 'Date'
                            then [tdate]......some more dynamic order by conditions..........
                         end
                    end asc
            )
    from CTE1
    inner join
    from TABLE3 on -- some conditions
    )
select *
from CTE2
into #TempTable;


Then add the clustered index:

create clustered index IX_TempTable_RowNumber on #TempTable (RowNumber asc);

select *
from #TempTable with (index (IX_TempTable_RowNumber));

----------------- End of sample code ---------------------


Even I checked the table scheme and index details using

exec tempdb.dbo.sp_help N'#TempTable';

select *
from tempdb.sys.indexes
where name = N'IX_TempTable_RowNumber'


And it seems correct to me. What am I missing here?
You have to use an ORDER BY.  Adding a hint to use a specific index does not guarantee any ordering of the resultset:

https://stackoverflow.com/questions/10064532/the-order-of-a-sql-select-statement-without-order-by-clause